når ja der kan man bare se tak :) hvis du lægger et svar.
kan du måske også forklare hvad dette betyder ? Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource. jeg får den fejl selv om den oprette en bruger
Hvis den kommer på det tidspunkt hvor du foretager din INSERT, er det fordi din sql()-metode ikke tager sig af at en INSERT ikke returnerer noget resultatsæt, og prøver at få en række ud selvom der ikke er nogen tilgængelig. Det er du nødt til at håndtere inde i den metode.
Det samme gælder desuden for UPDATE og DELETE - samt nogle andre, men dem bruger du næppe på selve siden.
Det lader desuden til at du ikke har en måde at håndtere forespørgsler der håndterer flere rækker (med mindre du returnerer ALLE rækker fra forespørgslen i form af et array, hvilket er meget ineffektivt hvad hukommelse angår), men det er svært at vide helt præcist når nu jeg ikke ved hvad sql()-metoden indeholder.
function sql($sql) { $forbindelse = mysql_connect("localhost","root",""); mysql_select_db("opgman",$forbindelse); $result = mysql_query($sql,$forbindelse) or die (mysql_error());
while ($row = mysql_fetch_array($result)) {
return $row; //returenere til function sql. Sørg for at du henter det returnere ud i en variable når du kalder functionen.
//lægger arrayet op i klassen variabler/arrays. //for at få fat i dem i en anden klasse. Lav instans //$udtreak = new Sql(); //$udtreak->udtreak("sql agument"); og //$udtreak->hentfrasql["brugernavn"];
//array_push($this->array2,$row);
//man kan evt også lave return =$row så skal man blot bare kalde function.
function sqlinsert($sql) { $forbindelse = mysql_connect("localhost","root",""); mysql_select_db("opgman",$forbindelse); $result = mysql_query($sql,$forbindelse) or die (mysql_error()); }
Det er ikke en ordentlig måde at takle opgaven på - det kan godt forsvares at have en metode til SQL-udtræk der skal returnere noget, og en til udtræk der ikke skal, men den måde du har lavet det på holder ikke.
Når jeg kigger på din sql()-funktion kan jeg se at du ikke har nogenmåde at hente flere rækker ud - return afslutter nemlig funktionen, ikke while-løkken - og kommentarerne vil i bedste fald kun kunne få alle rækker ud i et array på en gang, hvilket fylder forfærdeligt i hukommelsen.
Måden jeg har gjort det på er at lave en klasse udelukkende til database-kald hvor der er en metode der udelukkende står for at foretage mysql_query()-kaldet og gemme resultatet (på en måde så jeg kan have flere udtræk i gang samtidigt, hvis jeg har brug for det), og så en anden metode til at hente rækkerne ud en af gangen, på samme måde som mysql_fetch_array gør.
(Klassen er selvfølgelig mere avanceret end nævnt foroven - eksempelvis returnerer kaldet til min query-funktion det auto-genererede ID i den indsatte række såfremt det er en INSERT den modtager - men det er grundlæggende det princip der bruges).
Din tilgang til at håndtere flere rækker er i øvrigt fejlbefængt, da variable der oprettes i funktioner ikke bevares udenfor funktionen - dvs. at alt andet end det du return'er går tabt når funktionen afsluttes, med mindre du gemmer i en variabel udenfor funktionen ved enten at gøre en variabel global, eller ved at tilgå den via $GLOBALS inde i funktionen.
Der er desuden ingen grund til at oprette en forbindelse hver eneste gang - opret den en gang og gem en reference til den. Det andet er spild af tid.
Jeg gør det som nævnt ved at have lavet en klasse - der kan man deklarere et felt som man kan gemme den i.
Hvis du skal gøre det på din måde med at have metoder, kan du lave en metode der opretter og forbindelsen og gemmer det i en variabel du har initialiseret til null udenfor metoderne (lad os kalde den $conn). For at tilgå denne variabel skulle du så tilgå den via $GLOBALS-arrayet (dvs. $GLOBALS['conn']) eller skrive global $conn; øverst i de metoder hvor du skulle bruge den. Et alternativ er at returnere forbindelsen direkte fra den metode der opretter den, og så sende den med som parameter til de andre metoder - det bliver dog til mere kode i længden.
Synes godt om
Ny brugerNybegynder
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.