仅当值不为null时才更新PHP/MYSQL
我正在构建一个表单来更新多列数据。出于我的目的,此代码已部分成功。剩下要做的唯一一件事就是包含(如果不为NULL)更新查询。我不知道该怎么办 换句话说,我只希望在$\u POST值不为空时执行更新仅当值不为null时才更新PHP/MYSQL,php,mysql,forms,Php,Mysql,Forms,我正在构建一个表单来更新多列数据。出于我的目的,此代码已部分成功。剩下要做的唯一一件事就是包含(如果不为NULL)更新查询。我不知道该怎么办 换句话说,我只希望在$\u POST值不为空时执行更新 <form> <input type='text' name='input1' /> <input type='text' name='input2' /> <input type='text' name='input3' /> <input ty
<form>
<input type='text' name='input1' />
<input type='text' name='input2' />
<input type='text' name='input3' />
<input type='submit' value='submit' />
</form>
<?php
//db connect
$1=$_POST['input1'];
$2=$_POST['input2'];
$3=$_POST['input3'];
mysql_query("UPDATE table
SET a = $1
b = $2
c = $3
WHERE row = 'row_id");
);
?>
您可以使用合并
UPDATE table
SET a = COALESCE($1, a),
b = COALESCE($2, b),
c = COALESCE($3, c)
WHERE row = ''
试着用一个简单的副词
$1 = isset($_POST['input1'])? $_POST['input1'] : 'a';
$2 = isset($_POST['input2'] ? $_POST['input2'] : 'b';
$3 = isset($_POST['input3'] ? $_POST['input3'] : 'c';
if(count($_POST) > 0){
mysql_query("UPDATE table
SET a = $1
b = $2
c = $3
WHERE row = 'row_id");
);
}
试试这个:
$updateList = array();
if(!empty($_POST['input1'])) {
$updateList[] = 'a = '.$_POST['input1'];
}
//Do it for every input...
if(!empty($updateList)) {
$sql = 'UPDATE table SET '.implode(', ', $updateList).' WHERE row = 1';
}
请注意,我没有逃避/引用任何东西,因为你说你知道怎么做
COALESCE
这就是解决办法。它类似于甲骨文的NVL。
您可以像下面那样使用参数在准备好的语句中使用它
UPDATE
tbl_cccustomerinfo
SET
customerAddress = COALESCE(?,customerAddress),
customerName = COALESCE(?,customerName),
description = COALESCE(?,description)
WHERE
contactNumber=?
把它们排列成一个数组。像这样:
if(empty($_POST['input1']) && empty($_POST['input2']) && empty($_POST['input3'])) {
return false;
} else {
$updates = array();
if(!empty($_POST['input1']))
$updates[] = 'a='".$_POST['input1']."';
if(!empty($_POST['input2']))
$updates[] = 'b='".$_POST['input2']."';
if(!empty($_POST['input3']))
$updates[] = 'c='".$_POST['input3']."';
$query = "UPDATE table SET".$updates."WHERE row_id=''";
$sth = $sth->connect->prepare($query);
$sth->execute();
));
}
合并
合并是最好的选择
意思是:
COALESCE(a,b)仅仅意味着PUTa,但如果a为空(在您的案例中不是post/PUT),则将其替换为b
注意:如果任何一个值不为null,而另一个值为null,则该值将更新。
UPDATE
tbl_cccustomerinfo
SET
customerAddress = COALESCE(?,customerAddress),
customerName = COALESCE(?,customerName),
description = COALESCE(?,description)
WHERE
contactNumber=?
if(empty($_POST['input1']) && empty($_POST['input2']) && empty($_POST['input3'])) {
return false;
} else {
$updates = array();
if(!empty($_POST['input1']))
$updates[] = 'a='".$_POST['input1']."';
if(!empty($_POST['input2']))
$updates[] = 'b='".$_POST['input2']."';
if(!empty($_POST['input3']))
$updates[] = 'c='".$_POST['input3']."';
$query = "UPDATE table SET".$updates."WHERE row_id=''";
$sth = $sth->connect->prepare($query);
$sth->execute();
));
}
`mysql_query("UPDATE table
SET a =COALESCE($1,a)
b = COALESCE($2,b)
c = COALESCE($3,c)
WHERE row = 'row_id")`