编辑: 谢谢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”行。
我的提醒表:
有谁知道为什么?或者如何解决这个问题? 我昨天花了整整一夜,前一天和今天几个小时用谷歌搜索,并尝试不同的方式来查询。 感谢。
答案 0 :(得分:1)
这取决于$ fid的值:
$fid = '1, 2, 3';
$sql="SELECT * FROM alerts WHERE ownerid IN( $fid )";
echo mysql_num_rows($db->query($sql));
将返回所有3行。
答案 1 :(得分:1)
尝试引用您的值
IN ('1', '2', '3')
否则,它会查找字面上为“1,2,3”但不是“1”或“2”或“3”的值。
答案 2 :(得分:1)
如果$fid
是数组,则需要执行类似
$fid_sql = implode(','. $fid);
$sql="SELECT * FROM alerts WHERE ownerid IN( $fid_sql )";
请注意,如果它们是数据库中的整数字段,则不应在此处围绕每个值使用单引号。
如果$fid
是一个字符串=“1,2,3”,那么您需要做的就是删除查询中$fid
周围的单引号。