Вход

Просмотр полной версии : как в Mysql через PDO обновить данные если поле json


Sergey1986
22.11.2018, 19:04
Всем доброго, что то не могу понять как обновить данные в поле json
есть

$this->db = new PDO('mysql:host='.$config['host'].';dbname='.$config['name'].'', $config['user'], $config['password']);

public function query ($sql, $params = []){
$stmt = $this->db->prepare($sql);
if (!empty($params)){
foreach ($params as $key => $val){
if(is_int($val)){
$type = PDO::PARAM_INT;
} else {
$type = PDO::PARAM_STR;
}
// echo '<p>'.$key.' => '.$val.'</p>';
$stmt->bindValue(':'.$key, $val, $type);
}
}
//exit;
$stmt->execute();
return $stmt;
}

а вот само обращение (КАК ПРАВИЛЬНО СДЕЛАТЬ ЗАПРОС!!!!??????)

public function settingsUpdate ($post) {

$params = [
'login' => $post['log'],
'pass' => $post['pas'],

];

$this->db->query('UPDATE
table
SET colomn= REPLACE("login":"123", "pass":"321")
WHERE id = 1', $params);
}

Заранее спасибо!

laimas
22.11.2018, 20:03
А кто вас надоумил такие данные так хранить? И пароли в базе никогда не хранят в открытом виде.

Sergey1986
23.11.2018, 12:30
это как пример используется)))

Sergey1986
23.11.2018, 12:30
но забегаю вперед разобрался!

laimas
23.11.2018, 13:01
это как пример используется

Таких задач вообще не должно возникать и это пример необдуманной организации данных в базе. Либо думаете над ней, либо выбираете иной тип базы.

Sergey1986
23.11.2018, 14:56
Дайте совет тогда)!
есть смс провайдеры у каждого есть свой api( у кого то 2 параметра, у кого 3 и т.д. и с разными названиями парметров.) так вот как бы сделать так что бы пользователь мог выбрать себе провайдера (со своим набором настроек (вот они то как раз в json) необходимого и внес свои настоечные данные в систему и все бы заработало!

архитектура интересует?)

Sergey1986
23.11.2018, 14:57
как бы вы сделали?

SuperZen
23.11.2018, 15:17
В MySql есть тип данных JSON (https://dev.mysql.com/doc/refman/8.0/en/json-functions.html) - если хочется прям JSON и чтобы было можно было DML в стиле SQL )

laimas
23.11.2018, 15:35
как бы вы сделали?

На данный вопрос отвечает назначение данных. Как можно прятать логин, по которому не однократно будет выборка в базе, в строку?