【问题标题】:IN array in where clause mysql php pdo在where子句mysql php pdo中的IN数组
【发布时间】:2017-09-11 15:41:53
【问题描述】:

在我的 php 中,我有一个这样的数组:

Array ( [0] => 3 [1] => 5 )

我所做的是我在我的阵列上使用了json_encode($array, JSON_UNESCAPED_UNICODE);,结果如下:

["3","5"]


$array = json_encode($array, JSON_UNESCAPED_UNICODE);

现在,在这样做之后,我在 where 子句中使用 IN 的 select 查询中使用了它:

SELECT tablecode FROM table WHERE id IN $array

现在我得到了:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '["3","5"]' 附近使用正确的语法

我遵循了如何使用IN,但仍然发生这种情况。

如何在 IN 的 where 子句中使用数组

【问题讨论】:

  • IN 需要 () 而不是 []
  • json_encode 不会做你想做的事,转义可能会弄乱你的查询。相反,使用准备好的语句和参数绑定(PDOmysqli),然后根据需要进行调整以传入 IN 语句的变量。 SO上有一些问题可以解释如何做到这一点。

标签: php mysql arrays pdo


【解决方案1】:

也不需要使用json_encode()。只需使用implode() 将其以逗号分隔即可。

$comma_separated_number = implode(', ', $array);
SELECT tablecode FROM table WHERE id IN ($comma_separated_number);

【讨论】:

    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    相关资源
    最近更新 更多