【发布时间】:2017-06-18 18:42:12
【问题描述】:
我正在尝试执行仅显示此数组 $res 中的文章的查询。它包含文章 ID
$res = Array ( [0] => 42 [1] => 41 );
$res1 = $res;
$res2 = $res;
$Search = $db->prepare("
SELECT * FROM articles
WHERE id IN :res1
ORDER BY FIELD(id, :res2);
");
$Search->execute([
':res1' => $res1,
':res2' => $res2
]);
但它返回了这个错误
致命错误:未捕获的 PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在 '? 附近使用的正确语法。 ORDER BY FIELD(id, ?)' 在 C:\xampp\htdocs\index.php:16 的第 2 行 堆栈跟踪:#0 C:\xampp\htdocs\index.php(16): PDO->prepare(' \r\n\t\t\tSELECT * F...')
【问题讨论】:
-
WHERE id IN需要一个类似('1','2')的列表,但你给出的是一个类似'blah'的字符串。 Field 也可能想要一个 int 而不是字符串。 -
如果可以的话,多解释一下
-
@jay-blanchard 我不认为这是一个骗子。他的代码似乎没有像您链接的问题那样尝试替换表或列名。
-
这就是问题@bassxzero 我的问题没有重复
-
我知道它不是重复的。但我没有关闭它,我无法打开它