0

我想知道是否可以在 PDO 查询中使用类似 if 语句的东西。我目前的查询是:

public static function UpdateTable( $id, $name, $variable )
{
    self::query("
        UPDATE  table
        SET     name = :name,
        WHERE   id = :id
    ", array(
        ":name" => $name,
        ":id" => $id
    ));
}

这是由此准备和执行的:

public static function query($q, $params)
{
    $stmt = self::$con->prepare( $q );
    $stmt->execute( $params );
}

所有这一切都很好,但我也得到了 var $variable。如果 $variable 不为空,我希望更新该数据库列。

我可以在“UpdateTable”函数中做一个 if / else 语句,但在我看来这很丑,我在谷歌上找不到任何其他东西如何做到这一点。所以我想学习如何;)

4

2 回答 2

0

您还可以根据 php 中的任何条件标记您的查询,如下所示:

 public static function UpdateTable( $id, $name, $variable )
 { 
   $params = array(":name" => $name, ":id" => $id);
   $update = "";

   if(isset($variable)) {
     $update = ", columnname = :variable ";
     $params[':variable'] = $variable; 
   }

   $query = "UPDATE  table SET name = :name {$update} WHERE id = :id ";

   self::query($query,$params);
 }
于 2013-09-17T18:36:35.930 回答
0

您真的应该在 PHP 函数中执行此操作 - 如果数据库$variable为空,它将节省一次访问数据库的时间。但是,如果有人用枪指着你的头并威胁要扣动扳机,除非你在查询中这样做,你可以将它添加到 where 子句中:

UPDATE  table
SET     name = :name,
WHERE   id = :id
AND     :variable IS NOT NULL

或类似的东西(从未使用过PHP,所以我不知道传递一个空变量是否会变成SQL空......)

于 2013-09-17T18:16:06.970 回答