ошибка с oci_fetch_array, может извлечь данные из оракула по php - PullRequest
0 голосов
/ 16 апреля 2011

я могу получить данные из oracle db с помощью php, когда я пытаюсь выполнить цикл do для получения данных, он выдаёт мне ошибку

неопределенный индекс: идентификатор в C: \ xampp \ htdocs \ testing \ test.php в строке 15

вот мой код

<?php
$username = "kemo";
$password = "kemoacer77";
$server = "localhost/XE";
$conn = oci_connect($username, $password, $server);
if(!$conn){
die("connect error".oci_error());
}

$stid = oci_parse($conn, 'SELECT id, username FROM users');
oci_execute($stid);

while (($row = oci_fetch_array($stid, OCI_BOTH))) {
    // Use the uppercase column names for the associative array indices
    echo  $row['id'] ;
    echo $row['username'];
}

oci_free_statement($stid);
oci_close($conn);


?>

Ответы [ 2 ]

1 голос
/ 16 апреля 2011

Документация oci_fetch_array() гласит:

В Oracle по умолчанию, не чувствительные к регистру имена столбцов будут иметь ассоциативные индексы в верхнем регистре вмассив результатов .Чувствительные к регистру имена столбцов будут иметь индексы массива, использующие точный регистр столбцов.
Используйте var_dump() в массиве результатов, чтобы проверить соответствующий регистр для каждого запроса.

И комментарий в вашем коде также говорит:

// Use the uppercase column names for the associative array indices


Итак, почему вы используете строчные имена столбцов?

Это ваш код:

echo  $row['id'] ;
echo $row['username'];

Согласно комментарию в вашем коде и примечанию вруководство, если вы не используете верхний регистр, как это:

echo  $row['ID'] ;
echo $row['USERNAME'];


И, если это все еще не работает, просто сделайте, как сказано в руководстве: используйте var_dump() в вашем цикле, чтобы увидеть, как выглядят ваши данные:

while (($row = oci_fetch_array($stid, OCI_BOTH))) {
    var_dump($row);
}
0 голосов
/ 24 марта 2016

В моем случае я использовал NVL

Функция Oracle / PLSQL NVL позволяет подставлять значение, когда встречается нулевое значение

NVL (string1, replace_with)

ВЫБЕРИТЕ NVL (комиссия, 0) ОТ продаж;

Выход:

123 223 323

423

ответ будет как 123 223 323 0 423

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...