Php 在同一mysql表中插入多个var值

Php 在同一mysql表中插入多个var值,php,mysql,sql,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" si

这是我的第一个“从头开始构建”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 />
这样做的问题是,它插入变量中的数据,即使它为null。因此,如果用户只在第一行字段(project1、status1等)中输入数据,那么其他两个字段将插入一个空行

是否有一种方法,可以使用“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) . ")";
}
$inserts=Array();
对于($i=1;$i0){
$sql=“插入当前项目(日期、est完成、项目名称、状态)
值(“.intlode(“),(“,$inserts)。”);
}

此时,$sql应该只对所有三个字段都已提交的行进行完整的sql查询。

如果要检查已发布变量的值是否为空,请始终使用empty()方法

欲了解更多信息,请访问


for($i=1;$i)您是否尝试过动态构建sql查询-在将字符串连接到其余字符串之前检查值?编辑为说-yes,使用if-isset()在向sql查询添加一行之前,我会检查每个条目。一次插入一行比较容易,这样,如果其他行没有填写,您就不必担心其他行。有人可能会填写第1行和第3行,并将第2行留空,这也会导致问题。r lo-我尝试单独执行每一行,但它只写入最后一行o数据库,忽略前面的行。wribit-你能给我一个这样写的例子吗?谢谢Pankaj!我知道你在这里做什么,我喜欢它!唯一的问题是它仍然只是将最后一行插入数据库,而不是全部3行(如果它们不是空的,或者当然)。我还收到一个错误,因为代码缺少一个右大括号。@danzo根据您的建议,我编辑了脚本。谢谢您的编辑。现在的问题是脚本只插入最后一行。它应该写3行(如果这三行都不是空的话)如果所有三行都被填充,它只会插入最后一行。我们如何让它在脚本中循环以插入每一行?不幸的是,这对我来说不起作用。我没有收到PHP错误,但没有任何内容发布到数据库,也没有进入thankyou.PHP.Out,拿出
$sql
,检查您试图插入的值有多少。还有什么没有这些值是。可能您需要
addslashes()
$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) . ")";
}
 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);  
   }