Toon posts:

PHP + MYSQL -> Mysql error kan de fout niet vinden

Pagina: 1
Acties:
  • 69 views sinds 30-01-2008

Verwijderd

Topicstarter
Hey Tweakers. ik heb een probleem maar kan er niet achterkomen waar het probleem zit :( ik zal hieronder beschrijven wat er fout is :'(:

Geef eerst globaal aan wat het probleem is
Als ik mijn script (PHP) uitvoer krijg ik de volgende error:
HTML:
1
2
3
Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\tut-web\registreren.php on line 25

Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\tut-web\registreren.php on line 28


Geef dan aan wat je al geprobeerd hebt
Ik heb al verschillende dingen geprobeert ik dacht eerst dat het misschien lag aan een paar elsjes of ifjes maar dat is het niet ik heb geprobeert de $post_[]; te veranderen in een normale variable dat mocht ook niet baten

Geef vervolgens aan waar je denkt dat het aan ligt
Zelf denk ik dat het aan de variable ligt "email" en "gebruikersnaam"

Geef dan aan wat je geprobeerd hebt om dit probleem te verhelpen

Ik heb de post global vervangen met een variable maar dat mocht ook niet baten :|

Geef aan waarom je denkt dat dat niet klopt, of geef aan waarom je denkt dat dat niet werkt. Herhaal deze stappen totdat je alles hebt verteld wat je hebt geprobeert, en welke references je daarvoor gebruikt hebt. Geef ons de errors die je te zien krijgt.

HTML:
1
2
3
Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\tut-web\registreren.php on line 25

Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\tut-web\registreren.php on line 28


deze errors krijg ik dus te zien krijg ik zal hieronder de code posten het gaat op de mysql_num rows dat zijn allebij de lijnen die worden aangegeven

PHP:
1
2
3
4
5
$query = mysql_query("SELECT gebruikersnaam FROM members WHERE gebruikersnaam = '" . $_POST['gebruikersnaam'] . "'");
            $username = mysql_num_rows($query);

            $query = mysql_query("SELECT email FROM members WHERE email = '" . $_POST['email'] . "'");
            $e_mail = mysql_num_rows($query);


Wanneer je alles duidelijk hebt uitgelegd, vat je je probleem samen en stel je de uiteindelijke vraag.

• Ik ben mezig met een member systeem daar moet bij het registreren gekeken worden of de gebruikersnaam/email al bestaat in de database.
• Ik krijg een error ik weet eigenlijk niet waar het nogmeer aan kan liggen dan aan die post global
• Heeft iemand enig idee hoe ik het zou kunnen oplossen?
• Als iemand de hele code wil dan hoor ik het wel dan post ik hem erbij zijn 140 regels code dan duid ik wel aan om welke regels het gaat :)

Alvast bedankt voor het helpen

[ Voor 4% gewijzigd door Verwijderd op 21-01-2003 11:29 ]


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

or die(mysql_error());

die zie ik nergens?

Doet iets met Cloud (MS/IBM)


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

or die ...

te traag

[ Voor 54% gewijzigd door dusty op 21-01-2003 11:31 . Reden: darn D2k ]

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Beekforel
  • Registratie: November 2001
  • Laatst online: 22:56

Beekforel

Is eigenlijk geen vis

Als ik dit soort meldingen krijg is het meestal zo dat de query niks ophaalt oid. Probeer eens te achterhalen of je echt wel wat uit de tabel haalt.

ook traag :P

[ Voor 9% gewijzigd door Beekforel op 21-01-2003 11:34 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

or die :r
code:
1
2
mysql_query ( 'mooie query he' ) 
   or user_error ( mysql_error () );
d:)b

Volgens mij is die tiplist van mij wel wat voor jou. Zie m'n sig.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
or die() is slap en makkelijk te vergeten.
Beter is het om in een debugger de variabele $query te watchen en te zien wat er gebeurd. Dan zit je je code niet te vervuilen met (feitelijke) asserts die @ runtime nog achter kunnen blijven :/

Misschien is het nog wel beter om een fatsoenlijke error handling in elkaar te draaien :)

edit:
drm! You the man!

[ Voor 6% gewijzigd door Glimi op 21-01-2003 11:34 ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

En vaak is or die totaal geen probleem als het domweg een script voor eigen gebruik is dat gewoon niet verder mag gaan na een foute query executie ;)

  • smaij
  • Registratie: November 2000
  • Laatst online: 24-08 15:57
tja voor het testen gebruik ik altijd or die() en realtime gebruik ik in sommige gevallen die() en meeste gevallen niks.

Verwijderd

Probeer anders eens gewoon hetvolgende gedeelte even te echoen, dan kun je kijken of je query welk klopt.
PHP:
1
"SELECT gebruikersnaam FROM members WHERE gebruikersnaam = '" . $_POST['gebruikersnaam'] . "'"

  • Tom-Eric
  • Registratie: Oktober 2001
  • Laatst online: 25-03-2025
het lijkt me zowiezo niet slim om direct de output van je gebruikers te vertrouwen, ik zou als ik jou was eerst de POST variablen valideren voordat je ze gaat gebruiken, dat is veel veiliger.

Verder met je probleem. Probeer de query eens uit met phpmyAdmin, die heeft goede error reporting en wijst je netjes op eventuele fouten.

Je kan trouwens de velden username en email ook unique maken in mysql, dan hoef je niet te controleren of ze al bestaan, want als ze al bestaan laat MySQL het gewoon niet toe om ze nogeens te maken.

i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels


  • Carda
  • Registratie: Juli 2000
  • Laatst online: 07-08 23:13
'" . $_POST['gebruikersnaam'] . "'"


Je gebruikt quotes en dubbele quotes, mysql ziet het dan als :

".$_POST[

ram het eerst in een variabele :)

dus :

PHP:
1
2
3
4
5
6
7
<?
$gebr_naam = $_POST['gebruikersnaam'] ;


$result = mysql_query("SELECT gebruikersnaam FROM members WHERE gebruikersnaam = '$gebr_naam'");

?>

Mja ik denk van, lamaar prutsen enzo.. en waarempel soms lukt het ook nog!


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Carda:
'" . $_POST['gebruikersnaam'] . "'"


Je gebruikt quotes en dubbele quotes, mysql ziet het dan als :

".$_POST[

ram het eerst in een variabele :)
dus :
[snip]

Euhm, jij mag de manual van PHP nog een keertje doornemen, en dan vooral in de buurt van operators, concatenation.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Tom-Eric
  • Registratie: Oktober 2001
  • Laatst online: 25-03-2025
Carda schreef op 21 januari 2003 @ 14:51:
'" . $_POST['gebruikersnaam'] . "'"


Je gebruikt quotes en dubbele quotes, mysql ziet het dan als :

".$_POST[

ram het eerst in een variabele :)

dus :

[...]
Wat jij zegt klopt niet, je kan gewoon een normale quote gebruiken in een dubbele quote.
Beter nog is het om in zulke gevallen is gewoon te concatenaten:
PHP:
1
$string = "Blaat blaat " . $array [ 0 ] [ 'flanel' ] . " spef melp lerp"

uit drm's tiplist
edit:
Damn drm was me voor :X

[ Voor 35% gewijzigd door Tom-Eric op 21-01-2003 15:02 ]

i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels


  • Carda
  • Registratie: Juli 2000
  • Laatst online: 07-08 23:13
Leg dan es uit waarom het niet werkt dan drm?

Ik geef tenminste een oplossing.

En tummut jij plakt 2 strings aan een var slim hoor...maar dat gaat dus fout in de query

Mja ik denk van, lamaar prutsen enzo.. en waarempel soms lukt het ook nog!


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Carda:
Leg dan es uit waarom het niet werkt dan drm?

Ik geef tenminste een oplossing.
Ik heb nog geen MySQL error gezien, en mijn glazen bol is al een tijdje verdwenen.
En tummut jij plakt 2 strings aan een var slim hoor...maar dat gaat dus fout in de query

Volgens mij heb je toch echt niet zo'n heel erg goed idee waar je het over hebt, nofi :)

Als ik een $_POST array binnen krijg met 2 elementen:
code:
1
2
$_POST [ 'a' ] = "spef";
$_POST [ 'b' ] = "169";

dan kan ik daar heel prima een query van maken door dingen te concatenaten (aan elkaar te plakken):
code:
1
2
3
4
5
6
7
8
9
10
$query = "
   SELECT
      `woei`
   FROM
      `spef`
   WHERE 
      `spef`.`spef_id`= " . $_POST [ 'a' ] . "
   OR
      `spef`.`name` = '" . $_POST [ 'b' ] . "'
';


En als je het daar niet mee eens ben, dan is dat heel vervelend, maar toch echt dikke onzin :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
drm schreef op 21 January 2003 @ 15:54:
code:
1
2
3
4
5
6
7
8
9
10
$query = "
   SELECT
      `woei`
   FROM
      `spef`
   WHERE 
      `spef`.`spef_id`= " . $_POST [ 'a' ] . "
   OR
      `spef`.`name` = '" . $_POST [ 'b' ] . "'
';
Die laatste quote moet een dubbele zijn, zeker?

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • Tom-Eric
  • Registratie: Oktober 2001
  • Laatst online: 25-03-2025
bigtree schreef op 21 januari 2003 @ 19:28:
[...]
Die laatste quote moet een dubbele zijn, zeker?
a + b moeten ook omgedraaid worden :X

i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Ja whatever, 't gaat om 't idee. :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

bij gebrek aan input van de starter en het toch wel redelijke basic debugwerk doen we deze maar gewoon dicht

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.