我有一个表单,当前包含以下字段:
Name, Size, Template
此表单中有两个用于字段'Size' 和'Template' 的选择框。如果用户在选择框中选择了多个选项,我希望表单插入一个新行。
我已经为"template"做到了这一点,但我不知道如何使用 foreach 结构两次,以便在从 Size 字段中选择多个选项时它也插入一个新行.
这是我的代码,用于为多个"template"选择的选项插入新行:
$template = $_POST['Template'];
$size = $_POST['Size'];
foreach( $template as $temp ) {
switch( $temp ) {
case '1':
$template;
break;
case '2':
$template;
break;
case '3':
$template;
break;
case '4':
$template;
break;
};
$query = "INSERT INTO tbl (Name,Size,Template) VALUES('$name', '$size', '$temp')";
}
有没有办法两次使用此 foreach 语句但运行相同的查询。
比如我想做的
foreach( $size as $newsize) {
switch( $newsize ) {
//cases go here
};
}
最佳答案
for
循环更适合您一直试图实现的目标:
for($i=0; $i<count($size); $i++)
{
for($j=0; $j<count($template); $j++)
{
$currentSize = $template[$i];
$currentTemplate = $template[$j];
$query = "INSERT INTO tbl (Name, Size, Template) VALUES('$name', '$currentSize', '$currentTemplate')";
}
}
警告:我只是按照您用来演示其余代码的方式编写了查询。该查询实际上容易受到 SQL 注入(inject)攻击,您应该绝对避免它。而是像这样编写查询:
$query = "INSERT INTO tbl (Name, Size, Template) VALUES(?,?,?)";
问号是占位符。您需要准备此语句,然后在执行前将 $name
、$currentTemplate
和 $currentSize
绑定(bind)到它们。检查this有关准备好的语句的更多信息。由于您需要使用不同的数据多次执行相同的查询,因此您有更多理由使用准备好的语句。我强烈建议您查看上面链接中文档的示例#3
关于php - 选择框选项以写入数据库中的新行 - MySQL 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40036649/