2

编辑:谢谢 Baylor Rae 和 JvBerg - 您的回答/评论有助于解决问题。我不得不删除引号 - 我没有意识到。谢谢大家的帮助。


我正在尝试where ownerid='$friend_ids'使用该IN子句从“警报”表中选择所有数据。我遇到的问题(尽管有很多谷歌搜索和代码更改)是它只检索一行。

$fid=$ClassUsers->Friendids($user_id);
echo $fid;

返回(如预期)1,2,3。

但是在尝试时:

$sql="SELECT * FROM alerts WHERE ownerid IN('$fid')";
echo mysql_num_rows($db->query($sql));

仅返回“1”行。

我的警报表:

警报表

有谁知道为什么?或者如何解决这个问题?我昨天、前一天和今天几个小时都在谷歌上搜索并尝试不同的方式来查询这个问题。谢谢。

4

3 回答 3

1

如果$fid是一个数组,你需要做类似的事情

$fid_sql = implode(','. $fid);
$sql="SELECT * FROM alerts WHERE ownerid IN( $fid_sql )";

请注意,如果它们是数据库中的整数字段,则此处的每个值都不需要单引号。

如果$fidis a string = "1, 2, 3",那么您需要做的就是去掉$fid查询中的单引号。

于 2012-09-13T15:27:40.790 回答
1

这取决于 $fid 的值:

$fid = '1, 2, 3';
$sql="SELECT * FROM alerts WHERE ownerid IN( $fid )";
echo mysql_num_rows($db->query($sql));

将返回所有 3 行。

于 2012-09-13T15:16:21.270 回答
1

尝试引用你的价值观

IN ('1', '2', '3')

否则,它会查找字面上为“1、2、3”而不是“1”或“2”或“3”的值。

于 2012-09-13T15:23:55.920 回答