如何将此旧语句更新到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
谢谢!
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]);
文档: