获取一组ID号并按字母顺序从另一个表中收集信息

时间:2012-10-24 16:42:14

标签: php mysql

我正在尝试获取产品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查询行出错了。我究竟做错了什么?任何帮助和所有建设性批评都表示赞赏。

3 个答案:

答案 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");