如何在sql IN运算符中使用php数组?

我有和数组两个值,我想在选择查询中将它与sql IN运算符一起使用。

这是我桌子的结构

id comp_id

1 2

2 3

3 1

$arr有两个值的数组Array ( [0] => 1 [1] => 2 )

我想获取comp_id 1和comp_id 2的记录。因此,我编写了以下查询。

SELECT * from table Where comp_id IN ($arr)

但是它不会返回结果。

回答:

由于您拥有普通 就可以做到…

$sql = "SELECT * FROM table WHERE comp_id IN (".implode(',',$arr).")";


(由于不断出现,一些其他信息…)

如果使用 (特别是 )输入,可以做到

$sql = "SELECT * FROM table WHERE comp_id IN 

('".implode("','",array_map('mysql_real_escape_string', $arr))."')";

但不能处理NULL之类的值。并会添加引号 周围的数值,这并

如使用MySQL的严格模式下工作。https://dev.mysql.com/doc/refman/8.0/zh-CN/sql-

mode.html#idm1400823779170170 …仅在真正使用字符串(如VARCHAR)而非数字列的情况下才使用。

在 调用类似的东西mysql_real_escape_string是这样,任何引号 中字符串 被妥善处理!(以及防止SQL注入!)


…如果希望使用“ ”号码,可以使用intvalfloatval

$sql = "SELECT * FROM table WHERE comp_id IN (".implode(",",array_map('intval', $arr)).")";

清理输入。(输入中没有引号。

以上是 如何在sql IN运算符中使用php数组? 的全部内容, 来源链接: utcz.com/qa/418104.html

回到顶部