使用 DBO 连接插入或更新具有 json 值的 MySQL 表失败


Insert or Update MySQL table with json value using DBO connection fails

Data 是 JSON 编码的。它似乎总是失败并出现错误,就好像字符串没有正确转义一样,即使我已经尝试使用文档建议的两种quote()。也mysql_real_escape_string()但似乎没有任何效果:S

例如,如果我$data更改为"apa"而不是我的 json,我会得到:

PDO::errorInfo(): Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''apa''')' at line 1 )

-

$data = json_encode($jsonStoreArr, JSON_HEX_APOS | JSON_HEX_QUOT);
$stmt = $pdo->prepare("INSERT INTO _mytablename (movie_id, cached_data) VALUES (:id, :data) ON DUPLICATE KEY UPDATE cached_data = values(:data)");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->bindParam(':data', $data, PDO::PARAM_STR);
$stmt->execute();   
if ($stmt->errorCode() !== '00000') {
     print_r($stmt->errorInfo());
}

我在 json 字符串中编码了网址,然后简单地做了这个(下面),现在它可以工作了!

$data = json_encode($jsonStoreArr);
$stmt = $pdo->prepare("INSERT INTO _mytablename (movie_id, cached_data) VALUES (:id, :data) ON DUPLICATE KEY UPDATE cached_data = :data");
$stmt->bindParam(':data', $data, PDO::PARAM_STR);