0

ここでやろうとしているのは、mysql で生成されたチェックボックスからデータを取得することです。チェック ボックスのデータは配列にあります。したがって、選択されたすべてのチェックボックスについて、それぞれをクエリのパラメーターとして使用して、別のデータベーステーブルから詳細情報を取得したいと考えています。

以下のサンプルコード

if (isset($_POST['submitCourseCode'])) { 
     //GET ARRAY FROM DATABASE GENERATED CHECKBOXES                                         
     $aElective =  $_POST['electiveModules'];


    foreach($aElective  as $snode) {                                                    
        echo "$snode <br />";
    }
    //PASSING EACH DATA FROM ARRAY INTO QUERY   
    $Query = "SELECT ID,title,credits 
             FROM module 
             WHERE ID IN('" . implode("', '", $aElective) ."')";

    $Result = mysql_query($Query) 
    or die ("Query failed: " . mysql_error() . " Actual query: " . $Query);

    while ($Row = mysql_fetch_array($Result)) {

           $id = htmlentities($Row['ID']);
           $title = htmlentities($Row['title']);
           $credits = $Row['credits'];

    echo "<ul>" . $id . " " . $title .  " " . $credits . "</ul>";

    }  
}
var_dump($Query);   
var_dump($Result);  
var_dump($Row);     

私の結果のスクリーンショット ここに画像の説明を入力

おそらく内破関数が原因で、クエリで何かが起こっていると推測していますが、クエリではすべて問題ないようです。何が間違っているのかについて何か提案はありますか?

4

2 に答える 2

1

IN句のIDの前の空白に問題があります。

str_replace()呼び出しを追加してみてください

$Query = "SELECT ID,title,credits 
         FROM module 
         WHERE ID IN('" . str_replace(" ", "", implode("', '", $aElective)) ."')";
于 2012-08-06T10:14:36.857 に答える
1

array_map('trim', $aElective)asを使用して配列要素をトリミングする必要があります。

$Query = "SELECT ID,title,credits 
         FROM module 
         WHERE ID IN('" . implode("','", array_map('trim', $aElective)) ."')";
于 2012-08-06T10:02:35.693 に答える