繁体   English   中英

PDO:查询中的IF语句?

[英]PDO: IF statement in query?

我想知道是否可以在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语句,但是我认为这太丑了,我在Google上找不到其他方法。 所以我想学习如何;)

您确实应该在PHP函数中执行此操作-如果$variable为空,它将保存对数据库的访问。 但是,如果有人将枪对准您的头部并扬言要扳动扳机,除非您在查询中这样做,则可以将其添加到where子句中:

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

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

您还可以根据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);
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM