我想知道是否可以在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不为空,我希望更新该数据库列。
我可以在“UpdateTable”函数中创建一个if / else语句,但在我看来这非常难看我在Google上找不到任何其他内容如何执行此操作。所以我想学习如何;)
答案 0 :(得分:0)
你真的应该在PHP函数中这样做 - 如果$variable
为空,它将保存到数据库的行程。但是,如果有人将枪指向你的头并且威胁要扣动扳机,除非你在查询中这样做,你可以将它添加到where子句中:
UPDATE table
SET name = :name,
WHERE id = :id
AND :variable IS NOT NULL
或类似的东西(从未使用PHP,所以我不知道传递一个null变量是否会变成SQL null ...)
答案 1 :(得分: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);
}