MySQL - 如何选择值在数组中的行?
好吧,通常我知道如果你知道数组值(在本例中为1,2,3),你会做这样的事情:
SELECT * WHERE id IN (1,2,3)
但我不知道数组值,我只知道我想找到的值“存储”在数组中:
SELECT * WHERE 3 IN (ids) // Where 'ids' is an array of values 1,2,3
这不起作用。有没有另一种方法可以做到这一点?
好吧,通常我知道如果你知道数组值(在本例中为1,2,3),你会做这样的事情:
SELECT * WHERE id IN (1,2,3)
但我不知道数组值,我只知道我想找到的值“存储”在数组中:
SELECT * WHERE 3 IN (ids) // Where 'ids' is an array of values 1,2,3
这不起作用。有没有另一种方法可以做到这一点?
当查询到达 SQL 时,您必须已经展开了列表。如果您使用来自某些内部受信任数据源的ID,则可以100%确定它们是整数(例如,如果您之前从数据库中选择了它们),那么最简单的方法是:
$sql = 'SELECT * WHERE id IN (' . implode(',', $ids) . ')';
但是,如果您的数据来自用户,则需要确保仅获得整数值,也许最容易做到:
$sql = 'SELECT * WHERE id IN (' . implode(',', array_map('intval', $ids)) . ')';