hi! ik heb al een aantal opties geprobeerd en geprobeerd te googelen, maar kom er niet uit. iedere keer krijg ik dezelfde fout melding 'Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\Users\robin\OneDrive\Documenten\USBWebserver v8.6\root\phpopdrachten\fietsenmaker\inlog.php on line 21'

hier een deel van mijn code :

if(isset($_POST['inloggen'])) {
$username = $_POST['username'];
$password = md5($_POST['password']);

$query = "SELECT * FROM gebruikers WHERE username = '" . $username . "' AND password = '" . $password . "'";
$result = mysqli_query($con, $query);

if(mysqli_num_rows($result) == 1) {
echo "Juiste gegevens!";
}
else {
echo "Onjuiste gegevens!";
}
echo "<br />";
}


kan iemand mij uitleggen wat ik nou precies fout doe?

alvast bedankt! :)
mysqli_num_rows() geeft het aantal rijen terug.

Dus:


<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
 // waarom onnodig variabelen aanmaken??
 $username = $_POST['username'];
 $password = md5($_POST['password']);

 $query = "SELECT * FROM gebruikers WHERE username = '" . $username . "' AND password = '" . $password . "'";
 $result = mysqli_query($con, $query);

 $num_rows = mysqli_num_rows($result);

 // debug hulpje.
 echo $num_rows;
 if($num_rows > 1) // als er iets is gevonden en groter dan 1...
 {
   echo 'Correct';
 }
 else 
 {
   echo 'Geen num_rows dus NIET Correct!';
 }

}  

?>
misschien dit:
$query = "SELECT * FROM gebruikers WHERE username=$username AND password=$password";
Zie het zo snel niet, maar probeer eens dit in een nieuw php bestand.
Wel ff je de connect gegevens aanpassen aan jou eigen dingen.

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
  $username = $_POST['username'];
  $password = md5($_POST['password']);

  $link = mysqli_connect("localhost", "my_user", "my_password", "database");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if ($result = mysqli_query($link, "SELECT * FROM gebruikers WHERE username = '" . $username . "' AND password = '" . $password . "'";
)) {

    /* determine number of rows result set */
    $row_cnt = mysqli_num_rows($result);

    printf("Result set has %d rows.\n", $row_cnt);

    /* close result set */
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);

}

?> 
Je query geeft geen geldig resultaat, dan krijg je een FALSE terug en daar kan num_rows niet mee uit de voeten.
En dat is heel waarschijnlijk doordat je veld password heet, wat een gereserveerd woord is. Voeg gewoon wat foutafhandeling toe om het zeker te weten.
Wat @Pipo zegt.
En wat @Ben zegt.

En zorg dat je de DATA-delen binnen je SQL escaped met real_escape_string() (altijd in combinatie met quotes, het een is niet veilig zonder het ander). Je loginquery is vatbaar voor SQL-injectie.

EDIT: ook selecteer je geen character encoding met set_charset() bij het maken van een connectie :(.

Reageren