【发布时间】:2020-05-28 15:35:29
【问题描述】:
请原谅我,因为我对 PHP 和 MYSQL 比较陌生,我相信这可能是一个容易回答的问题(或者可能不是,我不确定)。 这是我的 HTML 形式的复选框
<form method="post" action="process.php">
<input type="checkbox" name="athlete[]" value="1">athlete 1
<br>
<input type="checkbox" name="athlete[]" value="2">athlete 2
<br>
<input type="checkbox" name="athlete[]" value="3">athlete 3
<br><br>
<input type="submit" value="Submit">
</form>
相当简单。然后我在 process.php 中有这个 PHP:
$checkboxes = isset($_POST['athlete']) ? $_POST['athlete'] : array();
foreach($checkboxes as $value) {
$sql = "INSERT INTO draftPick(user_id, athlete_id)VALUES('77', '$value' )";
}
if(mysqli_query($conn,$sql)) {
echo 'Data added sucessfully';
}
else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
我正在尝试使用我的复选框创建一个 foreach 循环,然后将每个复选框值插入到我的 MYSQL 表中的新行中。但是当我运行这个 PHP 时,它只有 strong> 将最后选中的复选框值插入到 MYSQLtable 中,而不是全部插入。我如何循环它,以便它将 all 检查值插入我的表中。感谢您的帮助!
【问题讨论】:
-
您需要在循环内执行查询。
-
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将任何数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST、$_GET或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
注意:object-oriented interface to
mysqli明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query接口混淆,因为缺少单个i会导致麻烦。示例:$db = new mysqli(…)和$db->prepare("…")程序接口是 PHP 4 时代的产物,不应在新代码中使用。