Php 多重插入无效

Php 多重插入无效,php,mysql,database,forms,insert,Php,Mysql,Database,Forms,Insert,我有多个If语句,如果为true,则将数据插入数据库。问题是INSERT语句中的第二条语句将其插入了4次。我如何阻止它添加重复项。另外,返回的$\u POST['tshirt']只包含一个值,该值将被插入4次 if(isset($_POST['distance'])) { $dist = $_POST['distance']; $sql="INSERT INTO sportevent_parameters.Distance(value, user_ref, event) VALUES ('$di

我有多个If语句,如果为true,则将数据插入数据库。问题是INSERT语句中的第二条语句将其插入了4次。我如何阻止它添加重复项。另外,返回的$\u 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());
是什么导致它在数据库中插入多个副本

Edit:mysql\u查询应该在if语句中,这样如果不调用if,它就不会被调用。我还要检查您传递的变量

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

链接到PHP手册:

首先,-也是

其次,问题是对
mysql\u query()
的调用应该在
if
语句中。在您所做的工作中,
mysql\u query()
将被执行,而只有SQL语句本身会被
if
更改。这意味着,如果第一个
if
条件为true,但所有其他条件均为false,则第一条语句将执行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());
将代码更改为:

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

无论您在
$\u POST
中有什么值,您的代码都会向服务器发送四个查询。这是因为您有四个
mysql\u query()
语句(未包含在
if
条件中)。您好,谢谢。这对我帮助很大。是的,我将修复那些松散的用户字段:-P