我有多个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());
什么会导致它将多个副本插入数据库?
答案 0 :(得分:0)
编辑:mysql_query应该在if语句中,因此如果不调用if,则不会调用它。我还会检查你传递的变量。
PHP不支持一个查询中的多个SQL语句。您必须将每个SQL语句拆分为对数据库的单独查询。
答案 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