使用JSON更新查询失败

时间:2014-12-13 01:53:25

标签: php mysql json mysqli

我尝试更新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

的任何想法

2 个答案:

答案 0 :(得分:3)

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

生成的查询如下所示:

UPDATE table_name SET colname = {“key1”:“val1”,“key2”:“val2”} WHERE somecol = someval

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

建议的方法如下:

注意:

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

示例:

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

$stmt->bind_param('s', $someValue);
$stmt->execute();

答案 1 :(得分:-1)

此colname列,看看它是否像字符串一样使用:

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