Не удается получить данные столбца #id

Я хочу повторить некоторые значения запроса

while(odbc_fetch_row($tableX)) 
{     
  for($i=1;$i<=odbc_num_fields($tableX);$i++) 
  {
    if ($i==1)
    {
      echo odbc_result($tableX,1); //echoed
      echo odbc_result($tableX,2); //echoed
      echo odbc_result($tableX,21); //echoed
      echo odbc_result($tableX,22); //echoed
      var_dump(odbc_result($tableX,22)); //returns values
    }
    else if ($i==2)
    {
      echo odbc_result($tableX,$i).'++';
      var_dump(odbc_result($tableX,22)); //returns bool(false) and empty rows     
    }  
    else if ($i==3)
    {
      echo odbc_result($tableX,$i).'+';   
    } 
    else
    {
      echo odbc_result($tableX,$i); //($tableX,1) ($tableX,2) ($tableX,3) echoed ($tableX,21) ($tableX,22) not echoed
    }
  }
}

Как я указал в комментариях, некоторые из odbc_result вызывают ошибку:

не могу получить данные столбца №21 не могу получить данные столбца №22

Я (не уверен, но) думаю, что проблема в следующем:

Ошибка возникает, если параметр номера столбца для поля меньше один или превышает количество столбцов (или полей) в текущем записывать. Точно так же возникает ошибка, если поле с именем, не одно из имен полей запрашиваемой таблицы (таблиц).

Тем не менее, я не мог видеть причину. Заранее спасибо.

Обновлено: Else работает, если я удалю эхо под if ($i==1) Оба типа данных 21 и 22 - NCLOB.

Какое значение возвращает odbc_num_fields($tableX)?

ADyson 13.04.2023 13:55

он возвращает 27 @ADyson

wittream 13.04.2023 13:59

Спасибо. Итак, вы говорите, что когда вы пишете odbc_result($tableX,22), оно выводит значение, но если вы пишете odbc_result($tableX,$i), это не так, даже когда $i имеет значение 22? Вы в этом полностью уверены? Потому что это не имеет никакого смысла

ADyson 13.04.2023 14:25

@ADyson верно!? это расстраивает. Я также набрал echo odbc_result($tableX,22); под else, все равно выдает ошибку.

wittream 13.04.2023 14:33

@wittream может существовать, но имеет ли оно значение во всех строках результатов? Кроме того, откуда именно приходят эти сообщения «не удается получить данные ...»? Это предупреждения PHP, уведомления или что? php.net/manual/en/function.odbc-result.php упоминает только, что возвращает false, если есть ошибка, или null, если столбец пуст. (Если вы временно используете var_dump вместо echo для тестирования, вы сможете точно увидеть, какой вывод он возвращает в этих случаях — например, false и null обычно не видны при использовании echo)

ADyson 13.04.2023 14:43

@ADyson ADyson, вы правы, значение столбца 22 не существует для каждой строки (некоторые из них равны нулю), но оно не отображается для тех, у которых есть значение. Я проверил еще раз, и это предупреждение Warning: odbc_result(): Cannot get data of column #21 odbc_result(): Cannot get data of column #22 для строки под else.var_dump результаты bool(false) для 21 и 22 для некоторых строк (вероятно, те, которые имеют нулевое значение) и пустые для других.

wittream 13.04.2023 15:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Исправлено путем преобразования NCLOB (odbc_result($tableX,21) and odbc_result($tableX,22)) в nvarchar

CAST(BINTOSTR(CAST("COLUMNNAME" AS binary)) as nvarchar)

Другие вопросы по теме