Неустранимая ошибка PHP PDO - PullRequest
1 голос
/ 22 июня 2011

У меня следующий запрос:

$sql  = "UPDATE db.users SET $str WHERE users.{$this->row} = {$this->value} LIMIT 1"; 

Какой эхо отсутствует:

UPDATE db.users SET username=testUser, gid=3 WHERE users.username = mmiller LIMIT 1 

Однако, когда я делаю:

$count = Db::init()->exec($sql);

Я получаю:

Fatal error: Uncaught exception 'PDOException' with message

'SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «mmiller» в «where clause» в /class.php:185 Трассировка стека: # 0 /class.php(185): PDO-> exec ('UPDATE db ...') # 1 /class.php(194): User-> modify ('имя пользователя', 'gid', 'testUser', '3') # 2 {main} добавляется в /class.php в строку 185

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 22 июня 2011

Вам нужно использовать "

UPDATE db.users SET username="testUser", gid="3" WHERE users.username = "mmiller" LIMIT 1 

Убедитесь, что ваше эхо показывает вам это.Вы можете использовать ' конечно, все, что плывет на вашей лодке:)

2 голосов
/ 22 июня 2011

Вам необходимо использовать кавычки вокруг строковых значений;

 $sql = "UPDATE db.users SET $str WHERE users.{$this->row} = '{$this->value}' LIMIT 1";

Поскольку вы уже используете PDO, может быть полезно использовать подготовленные операторы.Хотя это немного медленнее для одноразового запроса, оно повышает безопасность и обрабатывает все необходимые экранирования, поэтому вы не столкнетесь с этими проблемами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...