mysqli_num_rows foutmelding
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! :)
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:
Dus:
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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!';
}
}
?>
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!';
}
}
?>
Gewijzigd op 17/02/2017 19:06:48 door Bart V B
ik blijf dezelfde foutmelding houden :(
misschien dit:
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.
Wel ff je de connect gegevens aanpassen aan jou eigen dingen.
Code (php)
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
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
<?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);
}
?>
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);
}
?>
Gewijzigd op 17/02/2017 19:36:45 door Bart V B
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 :(.
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 :(.
Gewijzigd op 18/02/2017 00:29:29 door Thomas van den Heuvel




