Возможно ли передать имя столбца в качестве параметра в подготовленное заявление 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';
Что работает для моей ситуации. Надеюсь, это поможет. 🙂