我试图从id在数组中的表中获取所有帖子。因此,我有一个包含2个id的数组,这2个id有一个post,但是查询只返回第一个id中的post。
这是我的代码和示例值:
$ides= array();
array_push($ides, '1, 2');
$ids = implode(',',$ides);
$sql="SELECT * FROM post WHERE id IN ('$ids') ORDER BY date DESC";那么,在这种情况下,我得到的结果只是id为"1“的帖子。我做错了什么?
发布于 2019-12-15 01:45:39
您的查询只返回一个结果,因为您已将两个值括在单引号中。因此,您的查询如下所示
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";https://stackoverflow.com/questions/59337347
复制相似问题