[英]select row from one table where value exists from array from another table
[英]SELECT * FROM table WHERE value IN array only return one result
我试图从一个表中获取所有帖子,其中 id 在一个数组中。 所以,我有一个有 2 个 id 的数组,这 2 个 id 有一个帖子,但查询只返回第一个 id 的帖子。
这是我的带有示例值的代码:
$ides= array();
array_push($ides, '1, 2');
$ids = implode(',',$ides);
$sql="SELECT * FROM post WHERE id IN ('$ids') ORDER BY date DESC";
然后,在这种情况下,我得到的结果只是 id 为“1”的帖子。 我究竟做错了什么?
您的查询仅返回一个结果,因为您将两个值都括在单引号中。 所以你的查询看起来像这样
SELECT * FROM post WHERE id IN ('1, 2') ORDER BY date DESC
它应该是这样的
SELECT * FROM post WHERE id IN (1,2) ORDER BY date DESC
如果您在 mysql 控制台中运行初始查询,它可能会向您显示警告
mysql> select cast('1,2' as unsigned);
+-------------------------+
| cast('1,2' as unsigned) |
+-------------------------+
| 1 |
+-------------------------+
1 row in set, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: '1,2' |
+---------+------+------------------------------------------+
1 row in set (0.00 sec)
mysql>
要修复它,我建议使用以下代码
$ids = [1,2];
$ids_string = implode(',',$ids);
$sql="SELECT * FROM post WHERE id IN ($ids_string) ORDER BY date DESC";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.