我正在尝试获取产品ID的数组列表,获取相关数据(存储在另一个表中,我知道......设置不当),然后根据产品名称对它们进行字母顺序排列。以下是我到目前为止的情况:
$set = array($aID['id']);
$getInfo = mysql_query("SELECT * FROM tbl WHERE FIND_IN_SET('$set', id) ORDER BY name ASC");
while($product = mysql_fetch_array($getInfo))
{
echo $product['name'] . " <br /\n";
}
我收到了while行的错误消息,这意味着我的$ getInfo查询行出错了。我究竟做错了什么?任何帮助和所有建设性批评都表示赞赏。
答案 0 :(得分:3)
您无法将数组传递给mysql。您需要将其转换为逗号分隔的字符串:
$set = array($aID['id']);
$set = implode(',' $set);
此外,FIND_IN_SET中的订单也相反。它应该是
FIND_IN_SET(id, '$set')
老实说,我只是使用IN
因为FIND_IN_SET返回它在集合中的位置的索引,而不是你想要的:
SELECT * FROM tbl WHERE id IN ($set) ORDER BY name ASC
答案 1 :(得分:0)
我认为它需要$ set作为mysql查询的一部分。您应该像这样显示它是来自php的外部变量:
$getInfo = mysql_query("SELECT * FROM tbl WHERE FIND_IN_SET('.$set.', id) ORDER BY name ASC");
答案 2 :(得分:0)
您也可以使用IN
$ids = implode(",",$set);
$getInfo = mysql_query("SELECT * FROM tbl WHERE id IN (".$id.") ORDER BY name ASC");