Ale*_*x G -3 php mysql json pdo
我在MySQL的JSON类型列中得到以下数据:
{"2": [2, 3], "3": [29], "71": "test"}
Run Code Online (Sandbox Code Playgroud)
我需要搜索属性“2”内的数组值,当变量放置在查询中时效果很好,但在使用 PHP 的 PDO 数组时则不行。
$field_id = 2;
$option_id = 2;
$query = "SELECT id FROM notes WHERE JSON_CONTAINS(data, '{\"$field_id\": $option_id }')";
try {
$stmt = $dbh->prepare($query);
$stmt->execute();
$used_qty = $stmt->rowCount();
} catch(PDOException $ex) {
echo 'Query failed: ' . $e->getMessage();
exit;
}
// $used_qty returns 1 which is correct;
Run Code Online (Sandbox Code Playgroud)
通过数组绑定返回 0:
$query = "SELECT id FROM notes WHERE JSON_CONTAINS(data, '?')";
try {
$stmt = $dbh->prepare($query);
$stmt->execute(array('{"' . $field_id . '": ' . $option_id . '}"'));
$used_qty = $stmt->rowCount();
} catch(PDOException $ex) {
echo 'Query failed: ' . $e->getMessage();
exit;
}
Run Code Online (Sandbox Code Playgroud)
无法弄清楚我在这里错过了什么。请帮忙。谢谢。
您引用了占位符:
$query = "SELECT id FROM notes WHERE JSON_CONTAINS(data, '?')";
^-^--
Run Code Online (Sandbox Code Playgroud)
这意味着它不是占位符,而是包含问号的字符串。
删除那些引号。
| 归档时间: |
|
| 查看次数: |
1374 次 |
| 最近记录: |