用PDO更新旧的Mysql语句

问题描述 投票:0回答:1

如何将此旧语句更新到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 

谢谢!

php mysql pdo
1个回答
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]);

文档:

© www.soinside.com 2019 - 2024. All rights reserved.