[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по использованию PDO
tony733
Доброго времени суток. Возник следующий вопрос. В своем коде пытаюсь делать так:
     // DB Это наследник от PDO, в нем нет ничего особенного
$DBH = new DB();
$sql = "UPDATE `Groups` SET :parameter = :value WHERE ID= :id";
$STH = $DBH->prepare($sql);
$STH->bindParam(":value", $value);
$STH->bindParam(":parameter", $parameter);
$STH->bindParam(":id", $this->getID());
$STH->execute();
$DBH = NULL;


Пролетает без единого ворнинга. Но желаемого результата нет :D не апдейтится строка в таблице БД.
Если исправляю вот на это
      $DBH = new DB();
$sql = "UPDATE `Groups` SET ".$parameter." = :value WHERE ID= :id";
$STH = $DBH->prepare($sql);
$STH->bindParam(":value", $value);
$STH->bindParam(":id", $this->getID());
$STH->execute();
$DBH = NULL;

то все отлично. Подскажите пожалуйста незнающему) prepared statements юзаются только для значений параметров или у меня в чем-то другом косяк? Всем спасибо

 ! 

М
Выделяйте код тегами! [php][/php]
Winston




Спустя 16 минут, 24 секунды (28.02.2012 - 12:49) Oyeme написал(а):
Unfortunately, you can't bind parameters by column names. wink.gif

Спустя 25 минут, 31 секунда (28.02.2012 - 13:14) Placido написал(а):
Да, я как-то тоже столкнулся с такой проблемой. Как уже сказал Oyeme, связывать имена полей нельзя. Вот из мануала
Parameters cannot be applied on column names!
Но есть альтернатива - использовать обратные апострофы + str_replace("`", "``", $parameter) во избежание sql-инъекций.

$parameter = str_replace("`", "``", $parameter);
$sql = "UPDATE `Groups` SET `".$parameter."` = :value WHERE ID= :id";

Спустя 22 минуты, 47 секунд (28.02.2012 - 13:37) tony733 написал(а):
ясно=) спасибо)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.