[英]Checkboxes values in mysql db
下面的代码有什么问题。错误警告:为foreach()提供了无效的参数
if(isset($_POST['submit']))
{
foreach($_POST['team[]'] as $value)
{
$insert=mysql_query("INSERT INTO team('team') VALUES ('$value')");
}
if($insert)
{
echo "dONE";
}
}
<form method="post" action="check.php">
<input type="checkbox" name="team[]" value="AG"> Argentina
<input type="checkbox" name="team[]" value="GE"> Germany
<input type="checkbox" name="team[]" value="BR"> Brazil
<input type="submit" name="submit" value="submit">
</form>
尝试:
foreach($_POST['team'] as $value)
不要指代team[]
。 改为使用
if (isset($_POST['team'])) {
foreach($_POST['team'] as $value) { ... }
}
当您从$ _POST收到变量组时,它将是每个复选框的数组。
因此,除了使用team[]
您还应该使用
foreach($_POST['team'] as $value)
另外,您应该注意,如果未选中任何复选框,则关键团队将不存在,因此请确保在您的foreach之前执行if (isset($_POST['team']))
同样,您每次循环都会覆盖插入。
您可能想做这样的事情:
if(isset($_POST['submit']))
{
if (isset($_POST['team']))
{
$insert = true;
foreach($_POST['team'] as $value)
{
// we add security with mysql_real_escape_string
$value = mysql_real_escape_string($value);
$result = mysql_query("INSERT INTO team('team') VALUES ('$value')");
if (!$result)
{
$insert = false;
break;
}
}
if($insert)
{
echo "dONE";
}
}
}
您可能需要检查mysql_real_escape_string来增加代码的安全性
当您在输入上执行name=something[]
时,php将为您创建数组,因此您只需要
foreach($_POST['team'] as $value)
另外像name=team[member][]
这样的东西也可以像这样在php中进行迭代
foreach($_POST['team']['member'] as $value)
因此,它使输入分组以及处理多个动态输入变得非常容易
请尝试以下操作:
$teams = $_POST['team'];
$submitted = $_POST['submit'];
if(isset($submitted) && is_array($teams)) {
foreach($teams as $team) {
/* Escapes special characters in a string for use in an SQL statement */
$team = mysql_real_escape_string($team)
$insert = mysql_query("INSERT INTO team('team') VALUES ('$team')");
}
if($insert) {
echo "dONE";
}
} else {
echo "Either Form Not Submitted or Teams is Not Array";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.