Нужна помощь с преобразованием ссылок mysqli_fetch_array в соответствующие ссылки OCI

В базе данных MySQL я использую следующий код PHP для успешного извлечения строк и размещения содержимого двух столбцов в таблице:

while ($row = mysqli_fetch_array($query))
{
  echo '<tr>
        <td>'.$row['sc_service'].'</td>
        <td>'.$row['sc_color'].'</td>
        </tr>';
}

Теперь я пытаюсь взять этот код и использовать его для базы данных Oracle. Я пытался поменять местами то, что, кажется, аналог OCI...

while (($row = oci_fetch_array($stid1, OCI_BOTH))!= false)
{
  echo '<tr>
          <td>'.$row['sc_service'].'</td>
          <td>'.$row['sc_color'].'</td>
        </tr>';
} 

... но переменные столбца (sc_service а также sc_color) не определяются.

Вопрос: существует ли другой подход для определения переменной столбца? Я хотел бы использовать переменные в других областях кода PHP, а не только для заполнения таблицы.

Я могу успешно выполнить следующий PHP-скрипт с использованием функций OCI (возвращается правильно заполненная таблица), поэтому я знаю, что успешно подключаюсь к базе данных:

<?php include 'database.php'; ?>  // my Oracle database oci_connect call

<?php

$stid = oci_parse($connect, 'SELECT * FROM service_color');
if (!$stid) {
  $e = oci_error($connect);
  trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$r = oci_execute($stid);
if (!$r) {
  $e = oci_error($stid);
  trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

print "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
  print "<tr>\n";
  foreach ($row as $item) {
    print "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
  }
  print "</tr>\n";
}
print "</table>\n";

oci_free_statement($stid);
oci_close($connect);

1 ответ

Решение

Имена полей в Oracle обычно всегда в верхнем регистре, а ключи массивов в PHP чувствительны к регистру:

while (($row = oci_fetch_array($stid1, OCI_BOTH))!= false)
{
  echo '<tr>
        <td>'.$row['SC_SERVICE'].'</td>
        <td>'.$row['SC_COLOR'].'</td>
        </tr>';
}
Другие вопросы по тегам