【发布时间】:2018-05-15 17:33:23
【问题描述】:
我有一个函数可以更新 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 查询。它看起来是多余的,想知道是否有更好的方法来处理这种情况。
【问题讨论】:
-
你应该把这个问题发到codereview
标签: php mysql variables pdo field