Avatar billede sito Nybegynder
30. marts 2003 - 17:08 Der er 9 kommentarer og
1 løsning

php+mysql_fetch_row

Hej

Forsøger at hente nogen ting fra min dtabse, men det virker ikke rigtigt...
Har lavet en funktion, som opretter forbindelse til min db, og eksekverer en sql-forespørgsel. Ved siden af har jeg så lavet et script, hvor jeg henter ting fra funktionen, og det virker ikke helt. Hvis jeg skriver det hele i scriptet funker det, men ville være smart, hvis jeg kunne bruge min funktion...

Min funktion:

function executeSQL($strSQL)
    {
   
    $database = "databasenavn";
    $host = "hostnavn";
    $username = "brugernavn";
    $password = "password";

$connect = mysql_connect ($host, $username, $password);
$select = mysql_select_db($database, $connect);

$resultat = mysql_query($strSQL, $connect);
$luk = mysql_close($connect);
   
}

Og scriptet:

$strSQL = "SELECT gf_kurser.kursus_id, gf_kurser.kursusnavn,gf_personer.navn as ansvarlig
        FROM gf_kurser, gf_personer, gf_kursusansvar
        WHERE (gf_kurser.kursus_id = gf_kursusansvar.kursus_id
        AND gf_personer.person_id = gf_kursusansvar.kursus_id
        AND periode = 'F2003')"; 
   
executeSQL($strSQL);
   
while($querydata = mysql_fetch_row($resultat)) {
        echo  $querydata[0]." \n"; 
        echo  $querydata[1]."<br>\n";
        echo  $querydata[2]."<br>\n";
        echo "<br>\n";
    }

Jeg får følgende fejl:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource


Håber i kan hjælpe...
Avatar billede ahv Nybegynder
30. marts 2003 - 17:14 #1
Problemet opstår vel i at du laver en SELECT streng hvor du endnu ikje har connecte til din databasem jeg snakker om denne:

$strSQL = "SELECT gf_kurser.kursus_id, gf_kurser.kursusnavn,gf_personer.navn as ansvarlig
        FROM gf_kurser, gf_personer, gf_kursusansvar
        WHERE (gf_kurser.kursus_id = gf_kursusansvar.kursus_id
        AND gf_personer.person_id = gf_kursusansvar.kursus_id
        AND periode = 'F2003')";

Der er som jeg kan se ingen database connection inden den.
Avatar billede sito Nybegynder
30. marts 2003 - 17:18 #2
Nej, det er ikke der problemet ligger. DB forbindelsen fungerer fint, og strengen fungerer også, men det er i min fetch der er et eller andet galt. Kan dog ikke se hvad...
Avatar billede ahv Nybegynder
30. marts 2003 - 17:22 #3
$strSQL = mysql_query("SELECT gf_kurser.kursus_id, gf_kurser.kursusnavn,gf_personer.navn as ansvarlig FROM gf_kurser, gf_personer, gf_kursusansvar WHERE gf_kurser.kursus_id=gf_kursusansvar.kursus_id AND gf_personer.person_id=gf_kursusansvar.kursus_id AND periode='F2003'");
Avatar billede sito Nybegynder
30. marts 2003 - 17:24 #4
Ja, det virker, men det er vel det samme jeg gør i min $resultat i funktionen?
Avatar billede ahv Nybegynder
30. marts 2003 - 17:26 #5
Så kan jeg vel godt lægge et svar igen.
Avatar billede sito Nybegynder
30. marts 2003 - 17:29 #6
Ja, men jeg vil altså tillade mig ikke at acceptere det, da jeg vidste det i forvejen, og mit spørgsmål sådan set gik på at få funktionen ind over.
Avatar billede ahv Nybegynder
30. marts 2003 - 17:33 #7
Er det ikke dette du fik til at virke nu?

function executeSQL($strSQL)
    {
   
    $database = "databasenavn";
    $host = "hostnavn";
    $username = "brugernavn";
    $password = "password";

$connect = mysql_connect ($host, $username, $password);
$select = mysql_select_db($database, $connect);

$resultat = mysql_query($strSQL, $connect);
$luk = mysql_close($connect);
   
}

Og scriptet:

$strSQL = mysql_query("SELECT gf_kurser.kursus_id, gf_kurser.kursusnavn,gf_personer.navn as ansvarlig
        FROM gf_kurser, gf_personer, gf_kursusansvar
        WHERE (gf_kurser.kursus_id = gf_kursusansvar.kursus_id
        AND gf_personer.person_id = gf_kursusansvar.kursus_id
        AND periode = 'F2003')"); 
   
executeSQL($strSQL);
   
while($querydata = mysql_fetch_row($resultat)) {
        echo  $querydata[0]."&nbsp;\n"; 
        echo  $querydata[1]."<br>\n";
        echo  $querydata[2]."<br>\n";
        echo "<br>\n";
    }
Avatar billede sito Nybegynder
30. marts 2003 - 17:42 #8
Nej, har lavet det hele i scriptet, og ikke taget min funktion med:

$database = "dbnavn"; 
$host = "host";
$username = "bruger";
$password = "pass";
$connect = mysql_connect ($host, $username, $password);
$select = mysql_select_db($database, $connect);
   
$hentdata = mysql_query ("SELECT gf_kurser.kursus_id, gf_kurser.kursusnavn,gf_personer.navn as ansvarlig
FROM gf_kurser, gf_personer, gf_kursusansvar
WHERE (gf_kurser.kursus_id = gf_kursusansvar.kursus_id
AND gf_personer.person_id = gf_kursusansvar.kursus_id
AND periode = 'F2003')", $connect); 
   
while($querydata = mysql_fetch_row($hentdata)) {
echo  "KURSUSNUMMER:&nbsp;".$querydata[0]."\n"."<br>\n"; 
        echo  "KURSUSNAVN:&nbsp;".$querydata[1]."\n"."<br>\n";
        echo  "ANSVARLIG:&nbsp;".$querydata[2]."\n"."<br>\n";
        echo "<br>\n";
    }

Hvis jeg gjorde det på den anden måde vil jeg jo få to query's. Både i strengen, og i $resultat...
Avatar billede tefcke Nybegynder
30. marts 2003 - 20:24 #9
dit problem ligger i din funktion (executeSQL).

Du skriver :
$resultat = mysql_query($strSQL, $connect);

som er helt korrekt, men du glemmer lige en ting til aller sidst i din funktion, og det er at returnerer værdien. Da du er inde i et funktions-kald er du i et andet scoope end du er i uden for funktionen, så variabler inde for funktionen er ikke de samme som uden for variablen, med mindre de bliver erklæret global.

Altså skal din vunktion ændres til:

function executeSQL($strSQL)
    {
   
    $database = "databasenavn";
    $host = "hostnavn";
    $username = "brugernavn";
    $password = "password";

$connect = mysql_connect ($host, $username, $password);
$select = mysql_select_db($database, $connect);

$resultat = mysql_query($strSQL, $connect);
$luk = mysql_close($connect);

  return $resultat;
   
}


og dit funktionskald skal være som flg.

$resultat = executeSQL($strSQL);
Avatar billede sito Nybegynder
31. marts 2003 - 13:23 #10
SMUKT! Det virker. Takker mange gange.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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