当前位置: 首页 > 面试题库 >

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

谢夜洛
2023-03-14
问题内容

我有和数组两个值,我想在选择查询中将它与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)).")";

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



 类似资料:
  • 问题内容: 请查看以下代码: 这将显示11。 但!如果在功能参数中删除“&”运算符,则结果将为10。 这是怎么回事? 问题答案: 该运营商告诉PHP不要把它传递给函数时数组复制。取而代之的是,将对数组的 引用 传递给函数,因此函数修改了原始数组而不是副本。 只要看这个最小的例子: 在这里,输出为: –的呼叫未修改。另一方面,打到了。

  • 问题内容: $test = array(‘hi’); $test += array(‘test’,’oh’); var_dump($test); PHP中的数组意味着什么? 问题答案: 引用PHP语言操作员手册 +运算符返回添加到左侧数组的右侧数组;对于两个数组中都存在的键,将使用左侧数组中的元素,而右侧数组中的匹配元素将被忽略。 所以如果你这样做 你会得到 因此,的逻辑等效于以下代码段: 如果您

  • 问题内容: 我正在尝试在Dropwizard上使用MYSQL JDBI进行IN查询(我认为不相关)。 如这里的建议,我还用 但是,当我启动应用程序时,出现以下错误: 有谁对解决这个问题有个好主意? 问题答案: 有两种方法可以实现它。 1 。使用 该注释期望StringTemplate中具有SQL语句的组文件 说我有这个文件PersonExternalizedSqlDAO 由于我们正在使用,因此必须

  • 问题内容: 有人可以简单地向我解释什么是(有条件的“三元”)运算符,以及如何使用它? 问题答案: 这是if-else语句的单行缩写。它称为条件运算符。1个 这是可以通过条件运算符缩短的代码示例: 可以这样缩短: 与所有表达式一样,条件运算符也可以用作具有副作用的独立语句,尽管在缩小之外这是不常见的: 它们甚至可以链接: 但是要小心,否则最终将得到如下复杂的代码: 1 通常称为“三元运算符”,但实际

  • 问题内容: 为什么当我在做时它起作用,但是当我在做时: 它不起作用? 为什么,以及如何解决? 完整代码: 但是这段代码可以正常工作: JSFiddle:https ://jsfiddle.net/69z2wepo/55100/ 问题答案: 这样一来,您就可以改变状态,因为它和做是同一件事。您永远不要改变状态(请参阅https://facebook.github.io/react/docs/comp

  • 嗨, 我还尝试使用com.querydsl.core.types.dsl.expressions和com.querydsl.core.types.predicate,如下所示: 但我得到了一个无效的运算符和错误。 怎么会这样呢?