Ошибка динамического SQL 804 Неправильные значения в структуре SQLDA

Я получаю это динамическое предупреждение 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;
}

Как получаются неправильные значения? И как вы решаете эту проблему?

0

Решение

Вы всегда можете попробовать запустить 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;
0

Другие решения

Не знаю, если вы уже решили это, но у меня была та же ошибка с простым запросом вроде:

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).

0

По вопросам рекламы [email protected]