MySQL PHP - SELECT WHERE id = array()?

37 html php mysql arrays

可能重复:
使用数组的MySQL查询将数组
传递给mysql

我在PHP中有一个数组:

$array = array(1, 4, 5, 7);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我有一个不同值的数组,但我想编写一个MYSQL语句来检查它id是否等于数组中的任何值.例如,如果一行的id值为1,则它将返回该行,对于4,5和7也是如此.由于程序的性质,数组的长度可能会有所不同,因此这就是问题所在.我可以这样做:

SELECT ...
  FROM ...
 WHERE id = '$array'
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?
如果我不清楚,请向我询问更多信息.

ale*_*lex 106

使用IN.

$sql = 'SELECT * 
          FROM `table` 
         WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')';
Run Code Online (Sandbox Code Playgroud)

  • 如果我在数组值中有相同的ID,那么我得到单个时间数据我想要多时间数据那么我该怎么做呢? (3认同)
  • 我猜`IN`是首选语句.另外,感谢您向我展示如何将我的阵列专门放在那里.:) (2认同)

Nat*_*lor 30

你要找的是IN()声明.这将测试给定字段是否包含1个或更多值中的任何一个.

SELECT * FROM `Table` WHERE `id` IN (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

您可以使用简单的循环将$array变量转换为正确的格式.如果您的数组值来自前端,请务必注意SQL注入.


Ben*_*n D 16

只需使用ID IN ()语法:

$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")";
Run Code Online (Sandbox Code Playgroud)