Avatar billede Npinv Nybegynder
10. februar 2011 - 11:53 Der er 2 kommentarer og
1 løsning

Hvorfor returnerer PHP kun EN row?

Jeg har problemer med at få returneret mere end en row.

Kode:
<?php
    include 'DBconnZeus.php';
   
    $sql = "SELECT * FROM DB_Menu where active = 1 and parentID is null";
    $getmenu = DB_Conn_Zeus ('Redaktion',$sql);
    var_dump($getmenu);
?>


Og DBconnZeus indeholder:
<?php
function DB_Conn_Zeus ($dbname, $tsql)
    {
        $serverName        = "10.0.0.0";
        $uid             = "sa";
        $pwd             = "123456";
       
        $connectionInfo = array("UID" => $uid, "PWD" => $pwd, "Database"=>$dbname);
       
        $conn = sqlsrv_connect( $serverName, $connectionInfo);
       
        if( $conn )
        {
            //echo "Connection established.<br />";
        }
        else
        {
            echo "Connection could not be established.<br />";
            die( print_r( sqlsrv_errors(), true));
        }
       
        $stmt = sqlsrv_query( $conn, $tsql);
        if( $stmt === false )
        {
            echo "Error in query preparation/execution.<br />";
            die( print_r( sqlsrv_errors(), true));
        }
       
        /* Retrieve each row as a PHP object and display the results.*/
        while( $obj = sqlsrv_fetch_object( $stmt))
        {
              Echo "Found: ".$obj->ID."<br>";
              return $obj;
        }
       
        /* Close the connection. */
        sqlsrv_close( $conn);
    }
?>

Ligemeget hvad, kommer den kun ud med den første række den finder. Så der må være et eller andet galt i min while lykke? Men hvad?
Avatar billede xicrow Nybegynder
10. februar 2011 - 12:04 #1
Hej Npinv

Fejlen ligger rigtigt nok i din while-løkke, og består i at du kun returnere den første række fra forespørgslen "return $obj".

Når du returnere noget fra en funktion afslutter du funktionen, dvs. så sker der ikke mere derefter.

Du kan istedet erstatte det her:
/* Retrieve each row as a PHP object and display the results.*/
while( $obj = sqlsrv_fetch_object( $stmt))
{
    Echo "Found: ".$obj->ID."<br>";
    return $obj;
}

/* Close the connection. */
sqlsrv_close( $conn);


Med det her:
// Make and array for results
$list = array();

/* Retrieve each row as a PHP object and display the results.*/
while( $obj = sqlsrv_fetch_object( $stmt))
{
    Echo "Found: ".$obj->ID."<br>";
    $list[] = $obj;
}

/* Close the connection. */
sqlsrv_close($conn);

// Return the list of objects
return $list;


/xicrow
Avatar billede Npinv Nybegynder
10. februar 2011 - 12:16 #2
Mange tak xicrow!

For andre der skal bruge dette, vil jeg lige tilføje at rækkerne udskrives med en foreach:

foreach($getmenu as $row)
{echo $row->menuname."<br>";}
Avatar billede xicrow Nybegynder
10. februar 2011 - 12:31 #3
Det var så lidt du.

Og godt du lige tilføje det med en foreach-løkke, den glemte jeg lige :)

/xicrow
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester