php implode не работает с SQL оракулом

1

Попытка поместить все результаты из таблицы oracle в переменную php, используя implode с этим кодом, но не работает. Что здесь не так?

$sql = oci_parse($ora_con, "SELECT * FROM TABLE");
oci_execute($sql);

while (($row = oci_fetch_row($sql)) != false) { 
    echo $result = implode(',',(array)$row[0]);  
}

И результат: resul1result2result3result4

Вместо: result1, result2, result3

  • 0
    Приведение $ row [0] к массиву даст вам массив с одним элементом
  • 0
    join - это псевдоним при взлете, ничего особенного там нет. но как он делает это неправильно. Сначала вы заполняете массив, а в конце вызываете implode ()
Теги:
implode

2 ответа

2
Лучший ответ

Проблема здесь в том, что вы выбираете строку за раз, затем вставляете один элемент, который не имеет запятой (как только один). Вы выводите это, затем переходите к следующему результату - который помещает его в вывод.

Вместо этого, возможно, попробуйте следующее, которое строит массив результатов, а затем эхо-результаты в результате:

$results = [];
while (($row = oci_fetch_row($sql)) != false) {
    $results[] = $row[0];
}
echo implode(',', $results);
  • 0
    Работает без $ results = []; наверху. большое спасибо. :)
0

Альтернативой ответу choult является выборка всех строк в наборе результатов с помощью oci_fetch_all:

$sql = oci_parse($ora_con, 'SELECT * FROM TABLE');
oci_execute($sql);
oci_fetch_all($sql, $result, 0, -1, OCI_NUM);

echo implode(',', $result[0]);
  • 0
    это тоже решение, оно работает. большое спасибо. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню