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);     

我的结果截图 在此处输入图像描述

我猜测我的查询可能是因为 implode 函数而发生了一些事情,但在我的查询中一切似乎都很好。关于做错了什么有什么建议吗?

4

2 回答 2

1

您需要使用以下方式修剪数组元素array_map('trim', $aElective)

$Query = "SELECT ID,title,credits 
         FROM module 
         WHERE ID IN('" . implode("','", array_map('trim', $aElective)) ."')";
于 2012-08-06T10:02:35.693 回答
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 回答