2016-03-02 3 views
1

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

$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 is alias on implode, ничего особенного там. но то, как он это делает, неверно. Сначала вы заполняете массив, и в конце вы вызываете implode() –

ответ

2

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

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

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

Он работает без $ results = []; на вершине. большое спасибо. :) –

0

Альтернатива choult's answer является извлечение всех строк в результирующем непосредственно с помощью 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

его также решение, оно работает. большое спасибо. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^