我在这里尝试做的是从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);
我的结果截图
我猜测我的查询可能会发生一些事情可能是因为内幕函数但我的查询中的一切似乎都很好。有什么建议我做错了?
答案 0 :(得分:1)
您需要使用array_map('trim', $aElective)
修剪数组元素:
$Query = "SELECT ID,title,credits
FROM module
WHERE ID IN('" . implode("','", array_map('trim', $aElective)) ."')";
答案 1 :(得分:1)
IN子句中的ID之前存在空格问题。
尝试添加str_replace()
电话
$Query = "SELECT ID,title,credits
FROM module
WHERE ID IN('" . str_replace(" ", "", implode("', '", $aElective)) ."')";