- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试运行以下程序:
$driverID = 123;
$query = 'SELECT
*
FROM cars
WHERE JSON_CONTAINS(`data`, \'{"drivers": [{"driverID": ":driverID"}]}\');';
$statement = $db->prepare($query);
$statement->bindParam(':driverID', $driverID);
$result = $statement->execute();
但是,它始终会导致空匹配。删除参数并直接输入值可以正常工作。
我怀疑引号有问题,但我不太明白 - 我需要修改什么才能使其正常工作?
最佳答案
您永远不能将参数占位符放在字符串定界符内。
错误:
SELECT * FROM MyTable WHERE mycolumn = ':param'
右:
SELECT * FROM MyTable WHERE mycolumn = :param
一个好的解决方法是在您的应用程序代码中构建 JSON 字符串,然后将整个 JSON 字符串绑定(bind)到参数。
$driverID = 123;
$obj = ['drivers' => [['driverId' => $driverID]]];
$json = json_encode($obj);
$query = 'SELECT
*
FROM cars
WHERE JSON_CONTAINS(`data`, :json);';
$statement = $db->prepare($query);
$result = $statement->execute(['json'=>$json]);
使用 json_encode()
是确保数据采用有效 JSON 格式的好方法。它可以防止您犯意外的语法错误。
在此处查看一个非常相似的案例(虽然是针对 PostgreSQL 的):Rails ActiveRecord: How to use bind variables with double quotes on jsonb
关于mysql - 如何在 MySQL JSON_CONTAINS 中使用 PDO bindParam?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52066131/
目前使用 MYSQL 5.7,即将迁移到 8.0。 我们的数据库中有一个 json 字段,其值如下所示: [ { "first_name":"bob", "last_name"
我有一个包含 json 列的表,我在其中存储了契约(Contract)类型的 ID 列表。我想在 contract_types 表上进行联接,以便我可以获得契约(Contract)类型名称的串联列表及
我有这个代码: (SELECT COUNT(streams.id) FROM streams WHERE JSON_CONTAINS(streams.server, '[\"servers.id"\"
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有一个像 这样的 json 数组 { "response":[ { "Rate Lock":"Yes", "Loan Amount":"1
我正在使用以下查询来搜索名为“JavaScript”的 json 值 当我运行查询时,我得到 0 个结果 这是我正在使用的插入命令 INSERT INTO admin_acc_mngmt_notes
我希望能够使用 json_contains 不区分大小写地“搜索” 这是 json 示例: [ { "title": "foo Bar", "author": "melaine"
使用 MySQL 5.7,我想知道 PostgreSQL 等价物 SELECT * FROM user_conversations WHERE JSON_CONTAINS(users, JSON_AR
在 MySQL 中,我使用 PHP 的 json_encode 将数据存储在“jsonValues”字段中: {"product_category":[[{"category":["28"]},{"p
我正在尝试选择 json 列中的 roles 属性包含任何值的所有列。 我试过的语句: SELECT * FROM components WHERE json->'$.roles' IN(1) 这甚至
我在 MySQL 数据库中有一个 JSON 字段,其中包含类似 [1,3,4,7] 的值。我希望能够轻松地从 PHP 变量提供另一个数组并确定是否存在任何重叠。我知道这个例子不起作用,但这是我想要做的
我有一个具有以下结构的表: select * from test_table; id |load_balancer_name |listener_descriptions
在我的 MySQL 数据库 (8.0.23) 上,我有一个 JSON 列是 multi value indexed .我想使用 QueryDSL 通过 JSON_CONTAINS 使用索引进行查询。我
我正在使用 MySQL 8 的新 JSON 功能,特别是多值索引。 我注意到有两种方法可以检查 JSON 数组是否包含给定值:MEMBER OF() 运算符和 JSON_CONTAINS() 函数。
我想要一个查询来返回表 minto_regsix_session 中所有条目的所有字段,这些条目在 'day' 字段中包含 2 的值。以下是表的 phpMyAdmin 的屏幕截图,包括包含 JSON
我有下表,其中在 JSON 整数数组上设置了多值索引: CREATE TABLE test ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, catIds
通过使用 (1) 我从 laravel 请求中获得了想要的结果。但是,一旦我将硬编码的“fish”切换为 $str = 'fish' 这样的变量,就会出现语法错误。 (1) $find = anima
我正在尝试运行以下程序: $driverID = 123; $query = 'SELECT * FROM cars WHERE JSON_CONTAINS(`data`, \'{"drivers":
因此,我在表格的一列中列出了“白名单”国家(例如 ['PT', 'US', 'UK', 'ES']),并且我想检查用户的国家(例如“美国”)是否在白名单中,以便向用户显示该行的内容。 我进行了搜索,发
我在查找带有参数为 JSON 格式的 where 子句的记录时遇到一些问题。例如,JSON 列的值类似于 ["1","2","3"]。当我运行 where JSON_CONTAINS(tags, '[
我是一名优秀的程序员,十分优秀!