28. februar 2004 - 18:23
Der er
9 kommentarer
simpel while løkke (mysql_fetch_object) med OO kode
Jeg har: while ($con -> query("select * from users")) { print_r ($object); i class har jeg: function query($mQuery) { $result = mysql_query($mQuery, $this->link); $object = mysql_fetch_object($result); // print_r ($object); return object; } JEg har 2 problemer. 1: Den kører i (forkert) løkke.. Det ser ud til at den altid kun selecter første række 2: Jeg kan ikke udskrive print_r($object) som er tom? Men hvis jeg udskriver den fra klassen, så virker det fint. Nogen der kan hjælpe mig lidt videre med lidt hints?
Annonceindlæg fra Hitachi
”Forskellighed gør os stærkere!”
Diversitet er ikke kun buzzwords og politisk korrekthed, men et spørgsmål om at alle føler sig godt tilpas og kan yde deres bedste.
31. januar 2025
28. februar 2004 - 18:57
#1
Jeg formoder $con er dit instance af klassen. Class: function function query($mQuery) { $result = mysql_query($mQuery); } function getnextRow() { $record = mysql_fetch_object($result); // Bliver der returneret et array? $stat = is_array($record); return $stat; } function printRow() { print_r($record); } I dit script: $con->query("select * from users"); while ($con->getnextRow()) { $con->printRow(); }
28. februar 2004 - 19:00
#2
Din fejl er for øvrigt at du prøver at iterere over din funktion, hvor du laver din select-statement - hver gang du gør det, nulstiller du jo tælleren, og derfor får du kun det første resultat.
28. februar 2004 - 19:03
#3
...og jeg sover. :) $stat = is_array($record); skal naturligvis være: $stat = is_object($record); da mysql_fetch_object() returnerer et object, og ikke et array...
28. februar 2004 - 19:10
#4
Det lyder fornuftigt.. dog får jeg Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/oo/test.php on line 41 Kigger lige lidt på det.
28. februar 2004 - 19:50
#5
nu virker det næsten... dog virker $con->printRow(); dog ikke.. jeg kan kun få output ved at gøre således: $con -> query("$strSQL"); while ( $con->getnextRow()) { $con->printRow(); } function query($mQuery) { $this -> $result = mysql_query($mQuery, $this->link); } function getnextRow() { $record = mysql_fetch_object($this -> $result); print_r($record); // Bliver der returneret et object? $stat = is_object($record); return $stat; } function printRow() { print_r($record); } } Nogen der kan hjælpe? og markh opretter du svar?
28. februar 2004 - 20:29
#6
Hej Dank, Nedenstående virker med sikkerhed - du er velkommen til at bruge det, hvis du har lyst - jeg har selv brugt det en hel del gange, men har aldrig givet at gøre det helt færdigt (det virker jo!): class fooClass { # Initialize a bunch of variables var $Error; var $Errno; var $Host; var $User; var $Password; var $Database; var $link_id; var $query_id; var $Record; var $Row; function dbConnect() { $this->Host = ""; # Hostnavn $this->User = ""; # Brugernavn $this->Password = ""; # Password $this->Database = ""; # Database if ($this->link_id == 0) { $this->link_id = mysql_connect($this->Host, $this->User, $this->Password); if (! $this->link_id) { $this->halt("Link-ID == false - forbindelsen til databasen mislykkedes"); } } if (!mysql_query(sprintf("use %s", $this->Database), $this->link_id)) { $this->halt("Databasen '$this->Database' eksisterer ikke!"); } } function dbQuery($query) { if ($this->link_id == 0) { $this->dbConnect(); } $this->query_id = mysql_query($query, $this->link_id); } function numRows() { return mysql_num_rows($this->query_id); } function returnRow() { $this->Record = mysql_fetch_assoc($this->query_id); $this->Row += 1; $this->Errno = mysql_errno(); $this->Error = mysql_error(); $stat = is_array($this->Record); return $stat; } function f($Name) { return $this->Record[$Name]; } function halt($msg) { print "$msg\n"; exit; } } Mht. svar/point, behøver du ikke give mig noget; jeg går ikke efter point herinde. Bruger det til at holde mine egne evner i live, så de ikke ruster (alt for meget). :)
28. februar 2004 - 20:33
#7
Kort forklaring: Hvis du kalder funktionen dbQuery(), vil den automatisk oprette forbindelsen til databasen. Derefter kan du iterere over returnRow(), og printe med funktionen f() á lá: while ($con->returnRow()) { print $con->f("KOLONNE"); # KOLONNE er navnene på dine rows i den pågældende tabel i DB'en }
28. februar 2004 - 21:26
#8
ok jeg prøver det. opretter du et svar, og tak i alle tilfælde for din hjælp
25. april 2004 - 23:56
#9
ups.. har vist et par ikke lukkede spørgsmål som jeg hellere må rydde op i. svarer du?
Vi tilbyder markedets bedste kurser inden for webudvikling