是否可以在准备好的 MySQL 语句中将列名作为参数传递?举个例子:
UPDATE Images
SET :placement = :imageURL
WHERE ID = :titleID;
PDO'
在每个参数周围添加,因此上面的中间行变为:
SET 'Homepage' = '1.jpg'
哪个 MySQL 不喜欢。有没有办法在 PDO 语句中包含字段名的参数并接受它们?
否则我想我将不得不编写几个不同的 PDO 语句,具体取决于所选择的内容(?)。
是否可以在准备好的 MySQL 语句中将列名作为参数传递?举个例子:
UPDATE Images
SET :placement = :imageURL
WHERE ID = :titleID;
PDO'
在每个参数周围添加,因此上面的中间行变为:
SET 'Homepage' = '1.jpg'
哪个 MySQL 不喜欢。有没有办法在 PDO 语句中包含字段名的参数并接受它们?
否则我想我将不得不编写几个不同的 PDO 语句,具体取决于所选择的内容(?)。
你需要做这样的事情:
$column = 'someColumn';
$stmt = $db->prepare("UPDATE tableName SET {$column} = :columnValue WHERE ID = :recordId");
参数化占位符仅用于值。
我建议您阅读@YourCommonSense 针对您的问题发表的评论。
在这种情况下,我使用不同类型的替换参数,如下所示:
$unitLabel = 'store_number';
$sql = 'select * from users where [unitLabel] = :unit and level = :level;';
$sql = str_replace('[unitLabel]', $unitLabel, $sql);
$params = array(
':unit' => 300,
':level' => 'admin',
);
$stmt = $dbh->prepare($sql);
$stmt->execute($params);
准备好的 SQL 查询最终被处理(或多或少)为:
SELECT * FROM USERS WHERE store_number = 300 AND level = 'admin';
这适用于我的情况。我希望这有帮助。:)