使用PDO更新旧的Mysql语句

时间:2019-02-12 17:13:03

标签: php mysql pdo

如何将该旧语句更新为PDO语句?

旧的:

$query = "UPDATE  tbl_product
          SET
         image = CASE WHEN '$post_image' IS NULL OR CHAR_LENGTH('$post_image') = 0 THEN image ELSE '$post_image' END

和新的一个PDO

$query = "UPDATE tbl_product 
                SET 
                image=:image 

谢谢!

1 个答案:

答案 0 :(得分:2)

PDO具有命名占位符的优势。与MySQLi仅使用?作为占位符(PDO也具有占位符)不同,您可以使用:image作为占位符,并在必要时重复它-PDO然后将占位符替换为通过execute()或使用bindParam() / bindValue()绑定到该占位符。

只需将'$post_image'的所有实例替换为:image。请注意,在占位符周围没有引号。

$query = "UPDATE  tbl_product
          SET image = CASE WHEN :image IS NULL OR CHAR_LENGTH(:image) = 0 THEN image 
                           ELSE :image END";

然后,您准备并执行查询,将$post_image的值分配给:image占位符。请注意它在数组[..]内的情况。

$stmt = $pdo->prepare($query);
$stmt->execute(["image" => $post_image]);

文档: