Kreeg deze error, en spuugt ook een array uit, zag de verandering van de query, dacht dat het daar aan lag maar de error blijft staan, iets over mij row variablen.
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in.
dat is de lijn met $rows = mysqli_num_rows($query);
<?php
// Start de sessie
session_start();
error_reporting(E_ALL);
ini_set('display_errors', '1');
// Vereist config
require('config.php');
// Variablen voor error bericht
$error=''; // Variable voor opslaan van errors
if (isset($_POST['submit'])) {
if (empty($_POST['username']) || empty($_POST['password']))
{
$error = "Username or Password is invalid";
}
else
{
// Globale variablen
$username = trim($_POST['username']);
$password = trim($_POST['password']);
// MySQl injectie beschermen
$username = stripslashes($username);
$password = stripslashes($password);
// Query selecten
$query = mysqli_query($mysqli, "SELECT * FROM 'admins' WHERE naam = '".$username."' AND password = '".$password."'");
$rows = mysqli_num_rows($query);
if($rows == 1){
// Redirect user to index.php
header("Location: index.php");
exit();
}
else
{
$error = "credentials not good";
}
mysqli_close($mysqli);
}
}
?>
<?php
// declareren
function escape($string) {
return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}
function dump($array) {
?><pre><?php echo escape(print_r($array, true)); ?></pre><?php
}
// aanroepen
dump($_POST);
?>
mysqli_num_rows() verwacht een result te krijgen van een mysqli_query(), echter krijgt deze een boolean door.
Je query zal dus ergens stuk zijn, en een false teruggeven. Zorg voor goede foutafhandeling op je mysqli_query. Echo je query anders eens, en voer de data eens aan phpMyAdmin of welke mysql-client je maar gebruikt.
- query aangepast
- errors zijn weg
- debug regels laten staan
- database klopt
kan alsnog niet inloggen, dit is mijn query nu.
// Query selecten
$query = ("SELECT * FROM admins WHERE naam='".$username."' AND password='".$password."'");
mysqli_connect_error();
mysqli_error($query);
// Voer de query uit
$result = mysqli_query($mysqli, $query);
// Controleer of de login correct
$rows = mysqli_num_rows($result);
misschien dat de begin stuk van mijn index pagina niet klopt?
Hint:
Ik zie dat je verkeerde aanhalingstekens gebruikt, en verschillend in een query. Niet slim. Dit bijvoorbeeld: '".$password."' En je sluit weer af met dubbele apostrofe.
Check je code eens op dit soort gekke fouten bij http://phpcodechecker.com