[英]SQL IN operator with alias selector not working only return first match
Im trying to return a set of data with php where a specific id matches in a set of ids in the database. 我试图用php返回一组数据,其中特定ID与数据库中一组ID相匹配。
i have to following code: 我必须遵循以下代码:
$id = 2;
$stmGetScoutUnits = $db->prepare('SELECT * FROM scout_units as su WHERE '.$id.' IN (su.greenhouse_ids) AND user_id = 1');
$stmGetScoutUnits->execute();
$scoutUnits = $stmGetScoutUnits->fetchAll(PDO::FETCH_OBJ);
var_dump($scoutUnits);
database looks a follow: 数据库看起来如下:
scout_units
+---------+---------------+-------+
| user_id | greenhouse_ids| name |
+---------+---------------+-------+
| 1 | 1,2 | test |
| 1 | 1,2 | test2 |
| 1 | 3,4 | test3 |
+---------+---------------+-------+
When i have id 1 it returns sql rows 1 and 2 but when i have id 2 it returns nothing. 当我有ID 1时,它返回sql第1和2行,但是当我有ID 2时,它什么也不返回。 i have no id whats going on here?
我没有身份证,这是怎么回事? any idea?
任何想法?
What you need here is MySQL's FIND_IN_SET()
function, so your query should be like this: 您需要的是MySQL的
FIND_IN_SET()
函数,因此您的查询应如下所示:
SELECT *
FROM scout_units as su
WHERE FIND_IN_SET('.$id.', su.greenhouse_ids)
AND user_id = 1
And your prepared statement should be like this: 您准备的语句应如下所示:
$stmGetScoutUnits = $db->prepare('SELECT * FROM scout_units as su WHERE FIND_IN_SET('.$id.', su.greenhouse_ids) AND user_id = 1');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.