将多个var值插入到同一个mysql表中

时间:2014-02-12 17:17:21

标签: php mysql sql

这是我第一次'从头开始构建'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。因此,如果用户只在第一行字段(project1,status1等)中输入数据,则另外2个插入一个空行。

有没有办法,也许使用'if isset()',以便我的数据库中没有任何空白字段?

2 个答案:

答案 0 :(得分:0)

动态构建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查询。

答案 1 :(得分:0)

如果要检查已发布变量的值为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);  
   }