2014-05-18 106 views
-1

好吧我試圖建立一個快速和骯髒的登錄表單,但我繼續得到一個PHP錯誤「警告:mysql_num_rows()期望參數1是資源,null給出在」 我試着環顧四周但似乎沒有任何幫助或工作....php mysql登錄表單

<?php 

    $user = 'root';  //Database username ("Root for xampp") 
    $pass = '';    //Database password ("empty for exampp") 
    $db = 'dragondrivingschooldb';  //Name of database 

    $con = new mysqli('localhost', $user, $pass, $db) or die("Unable to connect"); //Create new data connection ('name of host/server', user, password, database name) 

    if(isset($_POST['txtusername'])) 
    { 

    $username = $_POST['txtusername']; 
    $password = $_POST['txtpassword']; 

    $SQL = mysqli_query($con, "SELECT * FROM users WHERE username=' " . $username ." ' AND password= ' " . $password . " ' LIMIT 1 "); 

    $result = mysqli_fetch_array($SQL); 

    if (mysql_num_rows($result) == 1) 
    { 
     echo "Hello World"; 
    } 
    else 
    { 
     echo "no"; 
    } 
} 
mysqli_close($con); 
?> 


    <!DOCTYPE html> 
    <form method="post" action="Login.php"> 
     username: <input type="text" name="txtusername"><br> 
     password: <input type="text" name="txtpassword"> <br> 
     <input type="submit" name="submit" value="Login" > 
    </form> 
</html> 
+1

改爲使用'mysqli_num_rows($ SQL)',請閱讀文檔:http://www.php.net/manual/en/mysqli-result.num-rows.php#example-1821 - 您必須通過查詢的結果。它不會接受一個數組。可以使用該代碼或「count($ result)」。 – Joe

+0

這意味着您的SQL查詢不返回任何內容。 – DLJ

+1

你在混合MySQL API。這不是朗姆酒和可樂。 –

回答

2

您正試圖使用​​mysql_num_rows()函數結果ARRAY(!)。 mysql_num_rows需要sql-resource,而不是由mysqli_fetch_array返回的php-array。

所以使用

if(count($result)===1) {...} 

或(最好)

if(mysqli_num_rows($SQL) === 1) { ... } 

和使用MySQL或mysqli的 - 但不要混用兩種。

順便說一句:確保在查詢中直接使用用戶輸入時防止注入查詢。