我有和数组两个值,我想在选择查询中将它与sql IN运算符一起使用。
这是我桌子的结构
id comp_id 1 2 2 3 3 1
我$arr有两个值的数组Array ( [0] => 1 [1] => 2 )
$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注入!)
mysql_real_escape_string
…如果希望使用“ 不受信任的 ”号码,可以使用intval或floatval
intval
floatval
$sql = "SELECT * FROM table WHERE comp_id IN (".implode(",",array_map('intval', $arr)).")";
清理输入。(输入中没有引号。