0

我正在尝试获取产品 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 查询行有问题。我究竟做错了什么?感谢任何帮助和所有建设性的批评。

4

3 回答 3

3

您不能将数组传递给 mysql。您需要将其转换为逗号分隔的字符串:

$set = array($aID['id']);
$set = implode(',' $set);

此外,您的 FIND_IN_SET 中的顺序也颠倒了。它应该是

FIND_IN_SET(id, '$set')

老实说,我只是使用INFIND_IN_SET 返回它在集合中的位置的索引,而不是你想要的:

SELECT * FROM tbl WHERE id IN ($set) ORDER BY name ASC
于 2012-10-24T16:46:56.327 回答
0

你也可以使用IN

$ids = implode(",",$set);
$getInfo = mysql_query("SELECT * FROM tbl WHERE id IN (".$id.") ORDER BY name ASC");
于 2012-10-24T16:48:13.530 回答
0

我认为它需要 $set 作为 mysql 查询的一部分。您应该表明它是来自 php 的外部变量,如下所示:

$getInfo = mysql_query("SELECT * FROM tbl WHERE FIND_IN_SET('.$set.', id) ORDER BY name ASC");
于 2012-10-24T16:47:29.070 回答