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]);
Документация: