首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELECT * FROM table WHERE数组中的值只返回一个结果

问SELECT * FROM table WHERE数组中的值只返回一个结果
EN

Stack Overflow用户
提问于 2019-12-15 01:10:37
回答 1查看 1.5K关注 0票数 1

我试图从id在数组中的表中获取所有帖子。因此,我有一个包含2个id的数组,这2个id有一个post,但是查询只返回第一个id中的post。

这是我的代码和示例值:

代码语言:javascript
复制
$ides= array();
array_push($ides, '1, 2');
    $ids = implode(',',$ides);  
                $sql="SELECT * FROM post WHERE id IN ('$ids') ORDER BY date DESC";

那么,在这种情况下,我得到的结果只是id为"1“的帖子。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-12-15 01:45:39

您的查询只返回一个结果,因为您已将两个值括在单引号中。因此,您的查询如下所示

代码语言:javascript
复制
SELECT * FROM post WHERE id IN ('1, 2') ORDER BY date DESC

它应该看起来像这样

代码语言:javascript
复制
SELECT * FROM post WHERE id IN (1,2) ORDER BY date DESC

如果在mysql控制台中运行初始查询,可能会显示一条警告

代码语言:javascript
复制
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>

要修复它,我建议使用以下代码

代码语言:javascript
复制
$ids = [1,2];
$ids_string = implode(',',$ids);
$sql="SELECT * FROM post WHERE id IN ($ids_string) ORDER BY date DESC";
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59337347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档