2016-10-18 103 views
0

首先,我使用MySQL 而不是 MySQLi。我會在不久的將來升級,但現在,我堅持這個當前代碼:MySQL(已棄用)mysql_num_row()錯誤

<?php 
$dbusername = "root"; 
$dbpassword = "pass123"; 
$db = "login"; 
$conn = @mysql_connect("localhost:3306", $dbusername, $dbpassword); 
mysql_select_db($db); 

$userid = $_POST["userid"]; 
$userpass = $_POST["userpass"]; 

$sql = mysql_query("SELECT password FROM users WHERE username = {$userid}"); 
echo $sql; 

if(mysql_num_rows($sql) >= 1){ 
    //user not found 
    echo "Found user login!"; 
} else { 
    //user found 
    echo "Could not find user"; 

} 

mysql_close($conn); 
?> 

,它不斷給我的錯誤「警告:mysql_num_rows()預計參數1是資源,布爾在給定的C:\ wamp64 \ www \ login.php第19行「。這是爲什麼造成的?

+1

很可能你的查詢由於某種原因失敗。 –

+0

@RiggsFolly直言不諱。 –

回答

2

這個查詢有錯誤

$sql = mysql_query("SELECT password FROM users WHERE username = {$userid}"); 

應該

$sql = mysql_query("SELECT password FROM users WHERE username = '{$userid}'"); 

由於username是幾乎可以肯定的數據庫

每次使用the mysql_ 時間上的文本數據類型數據庫擴展在新代碼 a Kitten is strangled somewhere in the world它已被棄用,並已多年,並在PHP7中永遠消失。 如果你只是學習PHP,花費你的精力學習數據庫擴展PDOmysqliStart here 爲列是幾乎可以肯定的字符串數據類型

+0

我殺了成千上萬的小貓。我使用'mysql_'的原因是因爲它附帶了我得到的WAMP服務器:P –

+0

僅供參考,'MYSQLI_'和'PDO'也是如此,並且自開發以來一直做完,可以回溯到時間的迷霧之中 – RiggsFolly

0

使用$sqlmysql_num_rows($sql)資源之前,檢查它的值是FALSE:mysql_query return values

$sql = mysql_query("SELECT password FROM users WHERE username = {$userid}"); 
if ($sql == FALSE) { 
    echo "an error occured in your query"; 
    die(); 
} 

if(mysql_num_rows($sql) >= 1){ 
    //user not found 
    echo "Found user login!"; 
} else { 
    //user found 
    echo "Could not find user"; 

} 

而作爲@RiggsFolly在他的建議評論,移動到PDO或mysqli