Versio

mysql_num_rows error

Overzicht Reageren

Victor Php

Victor Php

05/08/2010 19:07:54
Quote Anchor link
Hee allemaal,

Ik krijg een mysql_num_rows error.
De error is als volgt:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/wvuxmqrk/domains/*****/public_html/index.php on line 46
Gebruikersnaam en wachtwoord kwamen niet overeen!



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
                    

if(isset($_POST['gb'])  || isset($_POST['ww']))
{

echo 'U heeft niks ingevuld!';
echo '<meta http-equiv="refresh" content="5;URL=index" />';
}


else
{
$query = "SELECT ('gebruikersnaam', 'wachtwoord') FROM leden WHERE
gebruikersnaam='"
.mysql_real_escape_string($_POST['gebruikersnaam'])."',
wachtwoord='"
.mysql_real_escape_string($_POST['wachtwoord'])."'";
$uitvoeren = mysql_query($query);
if(mysql_num_rows($uitvoeren) == 0){       //Lijn 46

echo 'Gebruikersnaam en wachtwoord kwamen niet overeen!';
echo '<meta http-equiv="refresh" content="5;URL=index" />';

}

}
}

else
{
echo '<form action="" method="POST">
<input type="text" style="background-image:url(images/input.png);  width: 154px; height: 19px; border: solid 0px #FFF;" maxlength="20" value="gebruikersnaam" name="gebruikersnaam">
<br />
<input type="text" style="background-image:url(images/input.png);  width: 154px; height: 19px; border: solid 0px #FFF;" maxlength="20" value="wachtwoord" name="wachtwoord">                        
<div id="button">
<input type="image" src="images/go.png" value="About submit buttons" alt="[Submit]" name="submit">    
</form>'
;
}

?>





Iemand enig idee wat ik fout doe?
Ik kan jammer genoeg de eerdere topics over mysql_num_rows niet meer terugvinden.. :(

GreetzZzZzZz,,
Victor
Gewijzigd op 13/09/2010 11:20:07 door Erik Rijk
 
PHP hulp

PHP hulp

25/05/2012 07:05:50
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Erik Rijk
Moderator

Erik Rijk

05/08/2010 19:26:23
Quote Anchor link
Je hoeft geen haakjes te gebruiken in je query.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if(isset($_POST['gb'])  || isset($_POST['ww']))
{
echo 'U heeft niks ingevuld!';
echo '<meta http-equiv="refresh" content="5;URL=index" />';
}

Dit is geen goeie controle he.. Zijn alle velden verplicht? dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
foreach($_POST as $sKey => $sValue)
{

   if(empty($sValue))
      // error handling
   }
}

?>


Je hebt in je query 2 WHERE statement, maar scheid ze door een [komma], gebruik: AND

Test je query in phpMyAdmin ( geeft vaak duidelijke fouten en gebruik zelf ( tijdens het testen ) mysql_error. Als er een fout optreed, geeft deze functie die terug
Gewijzigd op 05/08/2010 19:27:57 door Erik Rijk
 
Noppes Homeland

Noppes Homeland

05/08/2010 19:29:27
Quote Anchor link
En hoe vaak moet er nu nog geschreven worden dat:
1. je een password niet plain opslaat
2. dat je mysql foutafhanding moet inbouwen (dan had je ons de foutmelding kunnen geven)
3. dat je eerst moet zoeken hoe je een SELECT statement inelkaar flanst, alvorens ook maar aan te komen met ene topic
4. dat dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(isset($_POST['gb'])  || isset($_POST['ww']))
{

echo 'U heeft niks ingevuld!';
echo '<meta http-equiv="refresh" content="5;URL=index" />';
}

?>

de grootsmogelijke onzin is
zie http://www.php.net/isset waarom dat dan zo is
5. dat je overzichtelijker moet programeren
6. dat het voorbeeld wat Erik geeft niet goed is i.v.m. dhet gebruik van de functie empty.
Zie http:/www.php.net/empty om te lezen waarom dat dan zo is
7. dat je in phpmyadmin je queries niet dient te testen gezien het feit je niet weet wat phpmyadmin op de achtergrond allemaal aan jouw query verneukt
Gewijzigd op 05/08/2010 19:33:33 door Noppes Homeland
 
Victor Php

Victor Php

05/08/2010 19:54:08
Quote Anchor link
Ik wéét dat er géén goede beveiliging in zit.
Foutafhandeling is even niet in me opgekomen, omdat ik nu net or die heb afgeleerd.

Ik zal eens naar al jullie punten kijken :)


-Edit-

En ik heb het script helemaal omgegooid toen ik probeerde de fout te vinden.
Zoals isset ;-)

-Edit2-

Hier zit ook nog een script omheen.
De error reporting staat helemaal bovenaan (onder session_start();)

-Edit3-

Wachtwoord is bewust plain opgeslagen.
Ik wil daarvoor de best mogelijke beveiliging maken, dus wou ik dat als laatste doen.

-Edit4-

My bad, ik dacht er even niet bij na toen ik dit topic aanmaakte.
Het ging me even om het inloggen en heb de beveiliging achter wegen gelaten.
Iets dat hier dus naar voren komt.
Gewijzigd op 05/08/2010 20:06:57 door Victor Php
 
- SanThe -

- SanThe -

05/08/2010 20:07:00
Quote Anchor link
Victor Php op 05/08/2010 19:54:08:
Foutafhandeling is even niet in me opgekomen, omdat ik nu net or die heb afgeleerd.


Daar begin je juist mee om dit soort vage foutmeldingen te voorkomen en juist heldere meldingen te krijgen.

Victor Php op 05/08/2010 19:54:08:
Ik wil daarvoor de best mogelijke beveiliging maken, dus wou ik dat als laatste doen.


Beveiliging doe je als tweede en nooit als laatste.


Verder zijn deze haakjes overbodig;
SELECT ('gebruikersnaam', 'wachtwoord') FROM ........

En wat er achter de FROM staat maakt niet uit omdat je hier twee keer een tekst achter SELECT hebt staan, dus dat zal er ook gevonden worden. Het resultaat van deze query is dus de tekst 'gebruikersnaam' en de tekst 'wachtwoord'.
 
Victor Php

Victor Php

05/08/2010 20:11:23
Quote Anchor link
@SanThe Nvt

Bedankt voor je reactie.
Ik zal er voortaan rekening mee houden. :)

-Edit-
Overnieuw begonnen aan systeem en ga nu alles netjes houden ;D
Gewijzigd op 05/08/2010 20:15:12 door Victor Php
 



Overzicht Reageren