2015-08-01 3 views
4

Я использую PHP-файл для хранения всех функций, которые мне нужны в моем проекте. Один из них заключается в следующем:Вызов функции PHP дает только одну строку из результата запроса

function recuperar_opcion_plato_linea ($plato_id) { 

/*** mysql hostname ***/ 
$hostname = 'localhost'; 

/*** mysql username ***/ 
$username = 'xxxx'; 

/*** mysql password ***/ 
$password = 'xxxxxxx'; 

try { 
$dbh = new PDO("mysql:host=$hostname;dbname=xxx", $username, $password); 
    /*** echo a message saying we have connected ***/ 


    /*** The SQL SELECT statement ***/ 
    $sql = "SELECT * FROM tb_opciones_linea_comanda WHERE id_linea = '".$plato_id."'"; 
    foreach ($dbh->query($sql) as $row) 
     { 
     return $row['id_opcion']; 
     } 

    /*** close the database connection ***/ 
    $dbh = null; 
} 
catch(PDOException $e) 
    { 
    echo $e->getMessage(); 
    } 


} 

С другой файл я вызываю эту функцию, но она дает только первую строку результата запроса, и есть по крайней мере 3 ряда.

И это PHP фрагмент кода для вызова функции recuperar_opcion_plato_linea:

<?php do { ?> 
     <p><?php echo $row_Recordset1['cantidad_pedido']." "; ?> 
     <?php echo recuperar_nombre_plato($row_Recordset1['plato_pedido'])." "."$ ".$row_Recordset1['precio_linea']." ".$moneda?></p> 
     <p><?php 
     $opcion_selecionada = recuperar_opcion_plato_linea ($row_Recordset1['id_random']); 
     echo recuperar_nombre_opcion($opcion_selecionada) ?></p> 
     <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?> 

Как я могу получить все строки из запроса?

ответ

4

Когда вы говорите return $row['id_opcion'];, который немедленно заканчивает ваш цикл foreach и сообщает функции для возврата. Вместо этого, вы должны просто return $dbh->query($sql)

Кроме того, если все, что вам нужно от вашего запроса один столбец id_opcion вы должны использовать SELECT id_opcion вместо SELECT *

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

// create a blank results array 
$results = array(); 

foreach ($dbh->query($sql) as $row) { 
    // add the row to the array 
    $results[] = $row['id_opcion']; 
} 

// return the finished results array 
return $results; 
+0

Спасибо Бен, но я не нужен массив. Я изменил, как вы предлагаете, запрос как SELECT id_opcion, а затем я просто изменил возвращаемую строку как: echo $ row ['id_opcion']. Теперь я получаю нужные строки ... еще раз спасибо – mvasco

+0

Нет проблем. Рад, что у вас это работает;) –

+0

Я могу принять ваш ответ за 2 минуты .... извините – mvasco

-1
$return = array(); 
while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)) == true) 
{ 
    array_push($return, $row_Recordset1); 
    // or $return[] = $row_Recordset1; 
} 

return $return; 
+0

спасибо bamtoggi, у меня уже есть ответ – mvasco

1

Заменить

$sql = "SELECT * FROM tb_opciones_linea_comanda WHERE id_linea = '".$plato_id."'"; 

foreach ($dbh->query($sql) as $row) 
{ 
    return $row['id_opcion']; 
} 

С

$sql = "SELECT * FROM tb_opciones_linea_comanda WHERE id_linea = '".$plato_id."'"; 
$return = array();  
foreach ($dbh->query($sql) as $row) 
{ 
    $return[] = $row['id_opcion']; 
} 
return $return; 

И

echo recuperar_nombre_opcion($opcion_selecionada) 

С

foreach ($opcion_selecionadas AS $opcion_selecionada) {echo '<br />' . recuperar_nombre_opcion($opcion_selecionada);} 
+0

спасибо Алекс. – mvasco

+0

приветствуются –

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