我有循环用于在1个单击按钮插入多个记录。 在我有IF语句的RATE = 0或NULL的一侧,然后只是忽略插入语句 这部分工作正常。如果rate = 0或null,则忽略插入。 但是这里奇怪的是它插入记录2次,然后是速率= 0或NULL。
我有PHPMYADMIN。
这是我的代码
for($i=0;$i<$a;$i++)
{
if(! get_magic_quotes_gpc() )
{
$po_number1[$i] = addslashes ($_POST['random']);
$master_vendor1[$i] = addslashes ($_POST['vendor_name']);
$market1[$i] = addslashes ($_POST['market'][$i]);
$start_date1[$i] = addslashes ($_POST['start_date'][$i]);
$end_date1[$i] = addslashes ($_POST['end_date'][$i]);
$qty1[$i] = addslashes ($_POST['qty'][$i]);
$rate1[$i] = addslashes ($_POST['rate'][$i]);
$comment1[$i] = addslashes ($_POST['comment'][$i]);
$media_type1[$i] = addslashes ($_POST['media_type'][$i]);
$sub_vendor1[$i] = addslashes ($_POST['sub_vendor'][$i]);
}
else
{
$po_number1[$i] = $_POST['random'];
$master_vendor1[$i] = $_POST['vendor_name'];
$market1[$i] = $_POST['market'][$i];
$start_date1[$i] = $_POST['start_date'][$i];
$end_date1[$i] = $_POST['end_date'][$i];
$qty1[$i] = $_POST['qty'][$i];
$rate1[$i] = $_POST['rate'][$i];
$comment1[$i] = $_POST['comment'][$i];
$media_type1[$i] = $_POST['media_type'][$i];
$sub_vendor1[$i] = $_POST['sub_vendor'][$i];
}
if($rate1[$i] == 0 || $rate1[$i] == null)
{
// rate is 0 or null, add error
// $errors[] = 'Rate is invalid in line ';
$errors[] = "Rate is invalid in line $i";
}
else
{
$sql = "INSERT INTO `order`(`po_number`, `vendor_name`, `market`, `start_date`, `end_date`, `qty`, `rate`, `comment`, `media_type`, `sub_vendor`) VALUES ('$po_number1[$i]','$master_vendor1[$i]','$market1[$i]','$start_date1[$i]','$end_date1[$i]','$qty1[$i]','$rate1[$i]','$comment1[$i]','$media_type1[$i]','$sub_vendor1[$i]')";
}
mysql_select_db('mediaplan');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
}
任何帮助都会被欣赏 谢谢..
crate table query
创建表格顺序( index int(255)AUTO_INCREMENT, po_number int(255), vendor_name varchar(255), market varchar(255), start_date日期, end_date日期, qty int(255), rate varchar(10), comment varchar(255), media_type varchar(255), sub_vendor varchar(255))
答案 0 :(得分:1)
if($rate1[$i] == 0 || $rate1[$i] == null)
{
// rate is 0 or null, add error
// $errors[] = 'Rate is invalid in line ';
$line = $i + 1 ;
$errors[] = "Rate is invalid $line in line $i"+"1";
}
else
{
$sql = "INSERT INTO `order`(`po_number`, `vendor_name`, `market`, `start_date`, `end_date`, `qty`, `rate`, `comment`, `media_type`, `sub_vendor`) VALUES ('$po_number1[$i]','$master_vendor1[$i]','$market1[$i]','$start_date1[$i]','$end_date1[$i]','$qty1[$i]','$rate1[$i]','$comment1[$i]','$media_type1[$i]','$sub_vendor1[$i]')";
mysql_select_db('mediaplan');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
}
尝试将此置于其他声明中
mysql_select_db('mediaplan');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
你有重复录入的原因是因为在你的循环中
如果($ rate1 [$ i] == 0 || $ rate1 [$ i] == null)不满意则转到其他方面
它会触发$ sql = //你的sql命令。
并且下一个周期将遇到满足该条件的条件
if($ rate1 [$ i] == 0 || $ rate1 [$ i] == null)
它将存储到您的erro阵列中
这里是你的$ sql仍然拥有它拥有的最后一个查询的技巧,即使它是 不会去$ sql它仍会转到mysql_query()这就是为什么你有重复的条目。