1

$_POST['domain']ドメイン (C、C++、Java など) の 3 つ以上の値を持つ何らかのフォームの CHECKBOX の結果であり、その値は現在配列に保存されてい'$Domain'ます。ここで、チェックボックスでユーザーが選択したのと同じドメインにあるテーブルからタプルを選択する必要があります。

FOR ループを使ってみたのですが、T_FOR unexception エラーか何かが発生しました。今、私はimplode関数でそれを試しています.クエリエラーは発生しませんが、クエリからの結果も表示されません! 問題は、クエリの IN 演算子内にあります。どうすれば解決できますか?

if(isset($_POST['domain']))
    {
        $Domain = $_POST['domain'];
        $search=$_POST['search'];

        $N = count($Domain);

        echo("<p>You selected $N domain(s):<br/><br/> ");
        for($i=0; $i < $N; $i++)
        {
            echo($Domain[$i] . "<br/> ");
        }
        echo("</p>");

        $dom_str="'".implode("', '",$Domain)."'";

    $query ="SELECT * FROM learner_object WHERE(lo_tag1='$search' || lo_tag2='$search' || lo_tag3='$search') AND 
            lo_domain IN ( ".$dom_str." ) ";

    $result =mysql_query($query)
    or die('query failed.'.mysql_error());

      while($row = mysql_fetch_array($result))
        {   
            echo  "<a href=\" ".$row['lo_url']." \" target=\"_blank\" \">"  .   $row['lo_name']  .   "</a> <br/> ";     
            echo $row['lo_desc']."<br/><br/>";      
        }
     }
     else
     echo "<p>You didn't select any Domain.</p><br/>";
4

3 に答える 3

1

これを試して、

  $dom_str=!empty($Domain)?implode(",",$Domain):'default value';

$query ="SELECT * FROM learner_object WHERE(lo_tag1='$search' || lo_tag2='$search' || lo_tag3='$search') AND 
        lo_domain IN ($dom_str)";
于 2012-10-16T17:18:15.770 に答える
0

私を助けてくれたすべての人に感謝します。私はあなたの助けを借りて正しいコードを見つけました。クエリ:-

$query ="SELECT * FROM learner_object WHERE(lo_tag1='$search' || lo_tag2='$search' || lo_tag3='$search') AND lo_domain IN ( '" . implode("','", array_map('trim', $Domain)) ."' ); ";
于 2012-10-17T05:41:12.097 に答える
0
$dom = implode (',',$Domain);  
$query ="SELECT * FROM learner_object WHERE(lo_tag1='$search' || lo_tag2='$search' || lo_tag3='$search') AND 
        lo_domain IN ( ".$dom." ) ";
于 2012-10-16T17:21:09.570 に答える