2016-10-10 174 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。這會讓你看到實際的錯誤信息。

相關問題