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

mysqlクエリの一部として$setが必要だと思います。これが次のようなphpの外部変数であることを示す必要があります。

$getInfo = mysql_query("SELECT * FROM tbl WHERE FIND_IN_SET('.$set.', id) ORDER BY name ASC");
于 2012-10-24T16:47:29.070 に答える
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 に答える