Я получаю это динамическое предупреждение sql после попытки получить результаты этого запроса:
Предупреждение: ibase_fetch_assoc (): Динамическая ошибка SQL Код ошибки SQL = -804 Неверные значения в структуре SQLDA
SELECT VOORRAADAUTO.*, AUTOMERK.*, VOORRAADAUTO.OMSCHRIJVING as uitvoeringnaam
FROM VOORRAADAUTO
LEFT JOIN AUTOMERK ON AUTOMERK.AUTOMERKID = VOORRAADAUTO.AUTOMERKID
WHERE VOORRAADAUTO.SOORTVOORRAADSTATUSID = 2 AND VOORRAADAUTO.TOTAALCONSUMENT > 0 ORDER BY AUTOMERK.OMSCHRIJVING DESC, VOORRAADAUTO.TOTAALCONSUMENT, VOORRAADAUTO.MODELOMSCHRIJVING;
И этот код PHP:
$p_sql = ibase_prepare($sql);
$rs = ibase_execute($p_sql);
while($row = ibase_fetch_assoc($rs)){
$auto = new auto($row);
$this->list[] = $auto;
}
Как получаются неправильные значения? И как вы решаете эту проблему?
Вы всегда можете попробовать запустить sql напрямую в базе данных.
Поскольку запрос Sql выглядит нормально, я могу только думать, что, возможно, в названии поля есть опечатка или она не возвращает строки. Или где поля не являются числовыми
Также я могу предложить использовать псевдоним вместо полного имени таблицы, что поможет прочитать запрос.
SELECT V.*, A.*, V.OMSCHRIJVING as uitvoeringnaam
FROM VOORRAADAUTO V
LEFT JOIN AUTOMERK A
ON A.AUTOMERKID = V.AUTOMERKID
WHERE V.SOORTVOORRAADSTATUSID = 2 AND V.TOTAALCONSUMENT > 0
ORDER BY A.OMSCHRIJVING DESC, V.TOTAALCONSUMENT, V.MODELOMSCHRIJVING;
Не знаю, если вы уже решили это, но у меня была та же ошибка с простым запросом вроде:
SELECT * FROM "any_Table" WHERE "id"=1
Это сработало для меня после того, как я заменил * на имя столбца:
SELECT "id", "Name" FROM "any_table" WHERE "id"=1
Я думаю, что это как-то связано с драйвером InterBase, я нашел это:
Сообщение об ошибке
Похоже, что клиент php interbase не может обрабатывать логические поля, после того как я изменил логическое поле в целое число, работает select *.
Я использую XAMPP, PHP версии 5.6.15, с interbase XE7 на окнах и использовал gds32.dll из установки interbase (12.0.4.357).