将多行插入mysql DB

时间:2011-01-04 08:15:10

标签: php mysql insert rows

如果某些字段包含数据,您如何将多行插入数据库?请考虑以下事项:

register_case = mysql_query ("INSERT INTO cases VALUES
                              ('$case','$p_firstname','$p_lastname','$city'),
                              ('$case','$p2_firstname','$p2_lastname','$city'),
                              ('$case','$p3_firstname','$p3_lastname','$city')"
                            );

这会创建多个具有不同名字和姓氏的行,但大小写和城市保持不变。但是,如果只有一个条目,则仍然为另一个条目创建一行2.仅当给定字段中存在数据时,如何才能创建行?

2 个答案:

答案 0 :(得分:0)

你可以尝试一下if例,它会做类似的事情:

if (isset($field)) do thisquery 

if ($field != "") do thatquery

答案 1 :(得分:0)

我认为这会从表单中获取信息吗?

如果是这样,将输入命名为“name =”firstname []“”,这将导致它们在提交时被放置在数组中,如$ _POST ['firstname'] [0],所以如果你有3名为firstname []的输入然后你得到$ _POST ['firstname'] [0],$ _ POST ['firstname'] [1]和$ _POST ['firstname'] [2]。

然后做这样的事情:

$sql = 'INSERT INTO `cases` VALUES ';

for($i = 0;$i < count($_POST['firstname']);$i++)
{
    $sql .= "('$case','".$_POST['firstname'][$i]."','".$_POST['lastname'][$i]."','$city')";
    if($i != count($_POST['firstname']) - 1)
    {
        $sql .= ',';  //Will insert a comma after each except the last.  Count - 1 since $i will equal count - 1 on the last one, since it starts at 0 and not 1.
    }
}

$register_case = mysql_query($sql);

我认为这应该有用。

或者你可以做一个foreach并在每一个上加一个','然后在完成时将它从字符串的右端修剪掉,或者做一个foreach并保留一个外部计数器,在结束后手动递增。第二个想法,这些都不会抓住姓氏,没有做$ key =&gt; $ value类型的东西,并且做$ _POST ['lastname'] [$ key]。可能还需要使用if。

检查空字符串

当然,你永远不想直接将$ _POST或$ _GET值传递给SQL,先验证并确保没有注入。

相关问题