[英]Inserting multiple var values into same mysql table
这是我的第一个“从头开始”的PHP / MySQL项目。 我建立了一个非常简单的HTML表单,其中同一行重复了多次:
<h2 style="margin-top:0">Current Projects</h2>
Project: <input name="project1" type="text" size="40" value="1" />
Status: <input name="status1" type="text" size="40" value="1" />
Estimated Completion: <input name="estCompletion1" type="text" size="12" value="1" /><br />
Project: <input name="project2" type="text" size="40" value="2" />
Status: <input name="status2" type="text" size="40" value="2" />
Estimated Completion: <input name="estCompletion2" type="text" size="12" value="2" /><br />
Project: <input name="project3" type="text" size="40" value="3" />
Status: <input name="status3" type="text" size="40" value="3" />
Estimated Completion: <input name="estCompletion3" type="text" size="12" value="3" /><br />
我正在尝试将所有这些都同时写入同一数据库表,但要放在不同的行上。
$sql = "INSERT INTO current_project (date, est_completion, project_name, status)
VALUES (NOW(), '$estCompletion1', '$project1', '$status1'),
(NOW(), '$estCompletion2', '$project2', '$status2'),
(NOW(), '$estCompletion3', '$project3', '$status3')";
这样做的问题在于,即使变量为null,它也会从变量中插入数据。 因此,如果用户仅在字段的第一行(项目1,状态1等)中输入数据,则其他2插入一个空行。
有没有办法,也许使用'if isset()',这样我的数据库中没有空白字段?
动态构建SQL。
像这样:
$inserts = Array();
for($i=1; $i<=3; $i++) {
if (!$_POST["project".$i] && !$_POST["status".$i] && !$_POST["estCompletion".$i]) continue;
$inserts[] = "(NOW(), '".$_POST["estCompletion".$i]."', '".$_POST["project".$i]."', '".$_POST["status".$i]."')";
}
if (Count($inserts)>0) {
$sql = "INSERT INTO current_project (date, est_completion, project_name, status)
VALUES (" . implode("), (", $inserts) . ")";
}
此时,$ sql仅应具有提交了所有三个字段的那些行的完整SQL查询。
如果要检查发布的变量的值为null,请始终使用empty()方法。
有关更多信息:访问php.net
for($i=1; $i<=3; $i++) {
$estCompletion= $_POST["estCompletion".$i];
$project= $_POST["project".$i];
$status= $_POST["status".$i];
if (!empty($estCompletion) && !empty($project) && !empty($status))
{
$sql = "INSERT INTO current_project (date, est_completion, project_name, status) VALUES (NOW(), '".$estCompletion."', '".$project."', '".$status."')";
}
unset($estCompletion, $project, $status);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.