2016-10-10 51 views
-1

我正在创建一个register.php,我现在处于创建“在数据库中的用户名和电子邮件检查”,不知何故,我总是得到一个错误。请帮我解决这个问题。由于警告:mysqli_num_rows()期望参数1是mysqli_result,布尔在第12行给出C: xampp htdocs medcares index.php

<?php 
    require_once('pages/connect.php'); 
    if (isset($_POST['username']) && isset($_POST['password'])){ 
    $username = mysqli_real_escape_string($connection, $_POST['username']); 
    $email = mysqli_real_escape_string($connection, $_POST['email']); 
    $password = md5($_POST['password']); 
    $repassword = md5($_POST['repassword']); 
    if ($password == $repassword) { 
     $fmsg = ""; 
     $usernamesql = "SELECT * FROM 'users' WHERE username='$username'"; 
     $usernameres = mysqli_query($connection,$usernamesql); 
     $count = mysqli_num_rows($usernameres); 
     if($count == 1){ 
      $fmsg .= "Username Already Exist!"; 
     } 

     $query = "INSERT INTO 'users' (username, password, email) VALUES ('$username', '$password', '$email')"; 
     $result = mysqli_query($connection, $query); 
     if($result){ 
      $smsg = "User Created Successfully."; 
     }else{ 
      $fmsg .= "Failed to Register User"; 
     } 
    } else { 
     $fmsg = "Password Do not Match"; 
    } 
} 
?> 

我已经检查很多次

$usernamesql = "SELECT * FROM 'users' WHERE username='$username'"; 

,但我仍然得到错误信息。请帮帮我。感谢您的帮助。

回答

0

此问题总是由失败的SQL语句引起的,这会导致错误的返回值。这应该被检查以确保您不会尝试将它用作例如行集。

在这种特别情况下,你应该使用users(或反引号等价,但它不是在这种情况下,必要的话),而不是'users'。前者是一个数据库对象,后者是一个字符串文字。

换句话说,一:

$usernamesql = "SELECT * FROM users WHERE username='$username'"; 
$usernamesql = "SELECT * FROM `users` WHERE username='$username'"; 
+0

我已经这样做了,但我仍然没有收到“用户名已存在!”的消息。我只收到一条错误消息“注册用户失败” – Kirito

+0

@Kirito,这是一个完全不同的问题,与问题标题中的错误无关。我建议你问一个新问题(在首先检查用户不存在于数据库中之后)。 – paxdiablo

0

查询中的引号是错误的。

$usernamesql = "SELECT * FROM 'users' WHERE username='$username'"; 

周围的引号 '用户' 应该是`风格的报价。你

还应该添加类似:

if (!$usernameres) { 
    die(mysqli_error()); 
} 

这应该向右走线下,你做mysqli_query。这会让你看到实际的错误信息。

相关问题