您好,我一直忙于学校项目,我收到错误:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in
/home/s1073623/domains/navarre.iie.nl/public_html/multimediadesign/inloggen.php on line 20
这是代码:
<?php
ini_set ("display_errors", "On");
session_start();
include("connection.php");
if(isset($_POST['login'])){
if(empty($_POST['gebruikersnaam']) || empty($_POST['wachtwoord'])){
echo "Niet alles is ingevuld!"; }
else {
$gebruikersnaam=$_POST['gebruikersnaam'];
$wachtwoord=md5($_POST['wachtwoord']);
$sql="SELECT * FROM users WHERE gebruikersnaam=".$gebruikersnaam." AND wachtwoord=".$wachtwoord." ";
$result=mysqli_query($connect, $sql);
if(mysqli_num_rows($result)==1){
echo "Welkom";
$_SESSION['gebruikersnaam']= $gebruikersnaam;
$_SESSION['wachtwoord']= $wachtwoord;
echo "Klik <a href=\"admin.php\">hier</a> voor het Dashboard.";
exit(); }
else { echo "Uw naam of wachtwoord zijn incorrect"; }
}
}
?>
有人可以帮助我,这很重要!!
答案 0 :(得分:0)
您的函数mysqli_num_rows($ result)显示错误,因为错误消息说明了 $ result不是mysqli_result,它是一个布尔值。
唯一的情况是当mysqli_result是一个布尔值时,就是当你生成的$ sql错误时,它返回FALSE(这是一个布尔值)。因此,如果你想调试它,你必须测试你的SQL请求(例如在PHPmyadmin中),并在你的代码工作之后使它工作。
答案 1 :(得分:0)
你应该准备好你的查询,它不仅更安全,而且你也可以避免错误。
在您的代码中,如果此表格中您正在检查的字段为VARCHARs
,则需要在这些变量周围添加引号:
$sql="SELECT * FROM users
WHERE gebruikersnaam= '$gebruikersnaam' AND wachtwoord='$wachtwoord' ";
使用预备声明:
$sql="SELECT * FROM users WHERE gebruikersnaam=? AND wachtwoord=? ";
/* create a prepared statement */
if ($result = mysqli_prepare($connect, $sql)) {
/* bind parameters for markers */
mysqli_stmt_bind_param($result, "ss", $gebruikersnaam, $wachtwoord);
/* execute query */
mysqli_stmt_execute($result);
if(mysqli_num_rows($result)==1){
echo "Welkom";
//........