使用 JSON 更新查询失败


Update query failing using JSON

我正在尝试更新mysql表并将json数组插入到列中(当前包含 json 数组)。

这是我尝试运行的内容:

$array = ['key1' => 'val1', 'key2' => 'val2'];
$array = json_encode($array);
// ...some time later:
$mysqli->query("UPDATE table_name SET colname={$array} WHERE somecol=someval");

当我使用 INSERT 时,这种相同的结构工作正常。关于为什么这不适用于UPDATE/SET的任何想法?

SQL到达数据库时可能搞砸了。你使用它的方式违背了使用 mysqli 的目的。

生成的查询如下所示:

更新table_name设置colname={"key1": "val1", "key2": "val2"} 其中 somecol=someval

由于缺少单引号,插入将不起作用。

推荐的方法如下:

注意:

  • 按照预期使用的方式使用 PDO(推荐)或 MySQLi。
  • 你必须做错误检查并填满自己

例:

$sql = 'UPDATE table_name SET colname=? WHERE somecol=someval';
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('s', $someValue);
$stmt->execute();

这个 colname 列,看看它是否像字符串这样使用:

  $mysqli->query("UPDATE table_name SET colname='{$array}' WHERE somecol='someval'");