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

标签 php mysql pdo

数据是 json 编码的。它似乎总是失败并出现错误,就好像字符串没有正确转义一样,即使我尝试按照文档建议使用 quote() .. 以及 mysql_real_escape_string()但似乎没有任何作用:S

如果我将 $data 更改为“apa”,而不是我的 json,我会得到:

PDO::errorInfo(): Array ( [0] => 42000 [1] => 1064 [2] => 您的 SQL 语法有错误;请检查与您的 MySQL 服务器对应的手册在第 1 行 ''\'apa\'')' 附近使用正确语法的版本 )

-

$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 字符串中对 url 进行了 urlencoded,然后简单地执行了此操作(如下),现在它可以工作了!

$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);

关于php - 使用 DBO 连接插入或更新具有 json 值的 MySQL 表失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18959897/

相关文章:

php - 使用 PDO 命令插入数据库

PHP 将格式化文本输入 MySQL

php - 数据库切换

php - 使用 LEFT OUTER JOIN 检索数据

mysql - 升级后需要帮助修复 MySQL 数据库中损坏的关系链接

mysql - 如何从mysql数据库中获取日期在2个datetimepicker的值之间的数据

php - 使用 MySqli 和数组返回多行

php - Jekyll 的动态内容

mysql - 如何知道命令行MySQL数据库导入是否崩溃?

php - MySQL select 查询发现一个不应该在 PDO 中找到的结果