Краткая версия (без попытки-х и уловов):Подготовленный оператор не возвращает ни одной строки
$dbConnection = new PDO("mysql:host=$serverName;dbname=$dbName", $userName, $password, $dbOptions);
$dbStatement = $dbConnection->prepare('SELECT * FROM bin_content WHERE LotId=":lot";');
dbStatement->bindParam(':' . $key, $filter->$key);
// $filter->lot contains "A32" and $key="lot",
// so I'm assuming "A32" will be filled into the statement
$dbStatement->execute(); // this is actually in a try/catch, and no exceptions are caught here
$row = $dbStatement->fetch(); // this returns false
Как упоминалось в приведенном выше коде, то fetch()
возвращает false
, но если я вручную запросить мою базу данных со следующим утверждением SQL, строка возвращается:
SELECT * FROM bin_content WHERE LotId="A32";
Я связывание свойства $filter
объекта, поскольку запросы являются динамическими в зависимости от свойств $filter
. Возможно ли, что я как-то не привязываю то, что, по-моему, привязываю?
уронить кавычки '«: много»' –
У вас есть двойные кавычки для некоторых нечетная причина и ';' внутри вашей подготовки. Тебе не нужны. –
@ N.B. и Шон, причина на самом деле не такая странная ... Это моя первая попытка подготовленных заявлений. Ошибка Noob. :) –