1

さて、特定のクエリの実行方法を理解するのに苦労しています。

これは私が達成しようとしていることです:

クエリ結果から DISTINCT ブランドを出力しようとしています。したがって、ユーザーがインスタンス「SHOE」を検索すると、データベース内のすべての靴を出力できます。さらに、ユーザーが特定のブランドを選択して結果をフィルタリングできるという選択肢もあります。MATCH AGAINST クエリから必要なすべてのデータを既に出力できますが、 PDO で最初のクエリをクエリできるクエリの実行方法がわかりません。

ここに私が持っているものがあります:

<?php
require_once 'login.php';
$db = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$usersearch=strip_tags($_POST['searchquery']);
$query=$db->prepare("SELECT * FROM products WHERE MATCH(description) AGAINST (? IN BOOLEAN MODE) OR MATCH(brand) AGAINST(? IN BOOLEAN MODE);SELECT DISTINCT brand FROM products");
$query->execute(array('+%'.$usersearch.'%','+%'.$usersearch.'%'));
$result=$query->fetchALL(PDO::FETCH_ASSOC);
?>

私の問題は"SELECT DISTINCT brand FROM products".

これは複数のクエリを実行する正しい方法ですか? これにより、セミコロンの左側にある各ブランドFROM THE FIRST QUERYが選択されますか?それとも、DB の各行に対してクエリを実行するだけですか?

どんな助けでも大歓迎です。

私はちょっと立ち止まっています。

4

2 に答える 2

-1

他の誰かがこの問題に遭遇した場合に備えて、この回答を投稿しています。空の配列を使用して各ブランドを格納し、いずれかの値が一致した場合は、continue を使用してそれを渡しました。

<?php
    $emptyarray=array();
    foreach($result as $row) {
        $individualbrand=$row['brand'];
        if(in_array($individualbrand,$emptyarray))
            continue;
        $emptyarray[]=$individualbrand;
        for($i=0;$i<10;++$i)
            echo '<a href="#">'.$emptyarray[$i].'</a><br />';}
            ?>

これにより、データベースの結果から一意のブランド名が出力されます。空の配列が作成され、重複のチェック中に値が入力されます。次に、for ループが各配列値を反復処理します。(検索の結果、全部で 10 を超えるブランド名が表示されるとは思わないため、10 を使用しました。) うまくいけば、これは将来誰かを助けることができます。

于 2013-05-15T18:26:28.873 に答える