Php 多行更新-如果字段为空,则更新列NULL
我有一个表单,它用6个字段更新多个行ID,我正在尝试获取正确的代码,以便在没有任何更改的情况下将列设置为NULL。 下面是我的代码。 我试图做的是在(shippedto_客户)处,如果我不添加if语句,更新工作正常,但我希望使用if语句,以防用户不更改shippedto_客户字段的日期。 对不起,如果我解释不正确Php 多行更新-如果字段为空,则更新列NULL,php,mysql,Php,Mysql,我有一个表单,它用6个字段更新多个行ID,我正在尝试获取正确的代码,以便在没有任何更改的情况下将列设置为NULL。 下面是我的代码。 我试图做的是在(shippedto_客户)处,如果我不添加if语句,更新工作正常,但我希望使用if语句,以防用户不更改shippedto_客户字段的日期。 对不起,如果我解释不正确 if(isset($_POST['Submit'])) { $count=count($_POST["id"]); for($i=0;$i<
if(isset($_POST['Submit']))
{
$count=count($_POST["id"]);
for($i=0;$i<$count;$i++){
$sql1="UPDATE $tbl_name SET status='" . $_POST['status'][$i] . "',
ship_from_factory='" . $_POST['ship_from_factory'][$i] . "',
shippedto_customer=if(shippedto_customer='',NULL,'" .
$_POST['shippedto_customer'][$i] . "'), ship_comments='" .
$_POST['ship_comments'][$i] . "' WHERE id='" . $_POST['id'][$i] . "'";
$result1=mysql_query($sql1);
}
}
if(isset($\u POST['Submit']))
{
$count=count($_POST[“id”]);
对于($i=0;$i您测试的是表中的旧shippedto\u客户
,而不是表单中的值
您可以使用NULLIF()
函数测试所存储的值是否为空字符串,并改为存储NULL
if(isset($_POST['Submit']))
{
$count=count($_POST["id"]);
for($i=0;$i<$count;$i++){
$status = mysql_real_escape_string($_POST['status'][$i]);
$ship_from_factory = mysql_real_escape_string($_POST['ship_from_factory'][$i]);
$shipped_to_customer = mysql_real_escape_string($_POST['shippedto_customer'][$i]);
}
$ship_comments = mysql_real_escape_string($_POST['ship_comments'][$i]);
$id = mysql_real_escape_string($_POST['id'][$i]);
$sql1="UPDATE $tbl_name
SET status='$staus', ship_from_factory='$ship_from_factory',
shippedto_customer=NULLIF('$shipped_to_customer', ''),
ship_comments='$ship_comments' WHERE id='$id'";
$result1=mysql_query($sql1);
}
}
if(isset($\u POST['Submit']))
{
$count=count($_POST[“id”]);
对于($i=0;$i首先,您应该使用PHP编写的语句,并停止使用mysql\ucode>PHP函数。为什么您使用的是近十年前就被弃用的过时且不安全的API?警告:不要使用在PHP 7中删除的过时接口。类似的替换和类似的指南有助于解释最佳实践。此处参数不是,这在该代码中有严重问题。请转义所有用户数据,特别是从$\u POST
或$\u GET
转义。