多个INSERT不起作用

时间:2011-10-17 11:44:17

标签: php mysql database forms insert

我有多个If语句,如果为true,则将数据插入到db中。问题是第二个INSERT语句插入了4次。我如何阻止它添加重复项。返回的$ _POST ['tshirt']也只包含一个插入4次的值。

if(isset($_POST['distance'])) {
$dist = $_POST['distance'];
$sql="INSERT INTO sportevent_parameters.Distance(value, user_ref, event) VALUES ('$dist', '$id', '$event')";
}

mysql_query($sql, $con)
    or die("MySQL Error: ".mysql_error());
if(isset($_POST['tshirt'])) {
$tshrt = $_POST['tshirt'];
$sql="INSERT INTO sportevent_parameters.T_Shirt(value, user_ref, event) VALUES ('$tshrt', '$id', '$event') ON DUPLICATE KEY UPDATE";
}

mysql_query($sql, $con)
    or die("MySQL Error: ".mysql_error());
if(isset($_POST['partnerid'])) {
$sql="INSERT INTO sportevent_parameters.Partner_ID(value, user_ref, event) VALUES ('$partnerid', '$id', '$event')";
}

mysql_query($sql, $con)
    or die("MySQL Error: ".mysql_error());
if(isset($_POST['racecategory'])) {
$sql="INSERT INTO sportevent_parameters.Race_Category(value, user_ref, event) VALUES ('$category', '$id', '$event')";
}

mysql_query($sql, $con)
    or die("MySQL Error: ".mysql_error());

什么会导致它将多个副本插入数据库?

2 个答案:

答案 0 :(得分:0)

编辑:mysql_query应该在if语句中,因此如果不调用if,则不会调用它。我还会检查你传递的变量。

PHP不支持一个查询中的多个SQL语句。您必须将每个SQL语句拆分为对数据库的单独查询。

链接到PHP手册:http://php.net/manual/en/function.mysql-query.php

答案 1 :(得分:0)

首先,please sanitise your user input before using it directly in a query!!! - 也read this

其次 - 问题是您对mysql_query()的调用应该在if语句中。根据您的操作,mysql_query()无论如何都会被执行,if只会更改SQL语句本身。这意味着如果第一个if条件为真,但所有其他条件都为假,则第一个语句将执行4次。

将您的代码更改为:

if (isset($_POST['distance'])) {
  $dist = mysql_real_escape_string($_POST['distance']);
  $sql = "INSERT INTO sportevent_parameters.Distance(value, user_ref, event) VALUES ('$dist', '$id', '$event')";
  mysql_query($sql, $con)
    or die("MySQL Error: ".mysql_error()); 
}

// etc etc