PHP 已准备好 MySQL 字符串中包含变量的 UPDATE 语句
PHP Prepared MySQL UPDATE Statement with Variable inside of a string
我试图在更新查询的字符串中包含一个变量,但似乎遇到了问题。我刚刚更新我所有的旧网站以使用准备好的语句,所以我还不太熟悉它们。我需要做什么来获取查询中连接的字符串和变量。
$insert = $pdo->prepare("INSERT INTO trees (name, unit) VALUES(:name, :unit)");
$insert->execute([
'name' => $name,
'unit' => $unit
]);
$insertid = $pdo->lastInsertId();
// THIS LINE SPECIFICALLY IS WHERE MY PROBLEM IS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
$update = $pdo->prepare("UPDATE trees SET filename='tree_".$insertid."_:file_name' WHERE id=:insertid");
$update->execute([
'file_name' => $file_name,
'insertid' => $insertid
]);
我试过不带单引号,在 :file_name 前加单引号。但我似乎得到的只是错误。任何帮助将不胜感激!
您想要 concat()
和查询参数而不是字符串连接:
UPDATE trees
SET filename = CONCAT('tree_', :insertid, '_', :file_name)
WHERE id = :insertid
实际上,CONCAT_WS()
在这里派上用场:
UPDATE trees
SET filename = CONCAT_WS('_', 'tree', :insertid, :file_name)
WHERE id = :insertid
我试图在更新查询的字符串中包含一个变量,但似乎遇到了问题。我刚刚更新我所有的旧网站以使用准备好的语句,所以我还不太熟悉它们。我需要做什么来获取查询中连接的字符串和变量。
$insert = $pdo->prepare("INSERT INTO trees (name, unit) VALUES(:name, :unit)");
$insert->execute([
'name' => $name,
'unit' => $unit
]);
$insertid = $pdo->lastInsertId();
// THIS LINE SPECIFICALLY IS WHERE MY PROBLEM IS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
$update = $pdo->prepare("UPDATE trees SET filename='tree_".$insertid."_:file_name' WHERE id=:insertid");
$update->execute([
'file_name' => $file_name,
'insertid' => $insertid
]);
我试过不带单引号,在 :file_name 前加单引号。但我似乎得到的只是错误。任何帮助将不胜感激!
您想要 concat()
和查询参数而不是字符串连接:
UPDATE trees
SET filename = CONCAT('tree_', :insertid, '_', :file_name)
WHERE id = :insertid
实际上,CONCAT_WS()
在这里派上用场:
UPDATE trees
SET filename = CONCAT_WS('_', 'tree', :insertid, :file_name)
WHERE id = :insertid