我有一个函数可以更新mysql表中最多3个字段。该函数可以接收所有3个要更新的字段,也可以只接收1或2个
现在我这样做是为了构造mysql语句。
if ($foo1){
$mysql_set = '`foo1` = :foo1';}
if ($foo2){
if ($mysql_set){$mysql_set .= ', ';}
$mysql_set .= '`foo2` = :foo2';}
if ($foo3){
if ($mysql_set){$mysql_set .= ', ';}
$mysql_set .= '`foo3` = :foo3';}
$update = $db->prepare("UPDATE `bar` SET $mysql_set WHERE `id` = :id");
if ($foo1){
$update->bindValue(':foo1', $foo1, PDO::PARAM_STR);}
if ($foo2){
$update->bindValue(':foo2', $foo2, PDO::PARAM_STR);}
if ($foo3){
$update->bindValue(':foo3', $foo3, PDO::PARAM_STR);}
$update->bindValue(':id', $id, PDO::PARAM_INT);
$update->execute();
如您所见,我重复了两次“if($foo1-$foo3){}”来构造这个mysql查询。这看起来是多余的,不知道是否有更好的方法来处理这种情况。
2条答案
按热度按时间q9yhzks01#
尝试。
wljmcqd82#
可以将关联数组指定给
execute()
,而不是打电话bindValue()
对每个参数分别进行。