2011-11-11 75 views
3

我對PHP和SQL都很新。我有一個登錄頁面,我要求用戶的用戶名和密碼。我想搜索我爲用戶名和密碼創建的數據庫,看看它們是否存在。數據庫表有兩列,即用戶名和密碼。我不太在意安全性,所以一個簡單的腳本就可以工作。但是我確實希望有一天能夠擴展它,因此我正在使用一個數據庫,因爲目前我只是在php中使用一個數組來存儲用戶名和密碼。檢查SQL數據庫是否存在值,然後返回值

我目前正試圖讓這段代碼工作,但沒有得到我需要的結果。

$user_name = "db_username"; 
$password = "db_password"; 
$database = "db_name"; 
$server = "db_server"; 



$db_handle = mysql_connect($server, $user_name, $password); 
$db_found = mysql_select_db($database, $db_handle); 

if ($db_found) { 
$result =mysql_query("SELECT 1 FROM my_table WHERE Username = $username"); 
if ($result>0) 

    { 
     echo 'Username and Password Found'; 
    } 
else 
    { 
    echo 'Username and Password NOT Found'; 
    } 
} 
else { 
print "Database NOT Found."; 
mysql_close($db_handle); 
} 

總是返回Username and Password Found無論用戶名是否在那裏。打印時$result我得到Resource id #2。謝謝

+0

如果(我的答案解決了你的問題){你能給它一個綠色的選中標記嗎? }其他{讓我知道如果它仍然不起作用; } –

+0

對不起,直到今天上午我都無法測試它。非常感謝。我不得不在$ username變量周圍添加撇號,但除此之外,它的效果很好。非常感謝。 –

+0

很高興能幫到你!我將在撇號和反引號中加入我對未來讀者的回答。 –

回答

8

$結果我認爲即使結果集包含零行也會計算爲真。它只根據手冊返回布爾錯誤。使用mysql_num_rows來確定您是否真的在查詢中找到任何內容。

if ($db_found) { 
$result =mysql_query("SELECT 1 FROM my_table WHERE `Username` = '$username'"); 
if ($result && mysql_num_rows($result) > 0) 

    { 
     echo 'Username and Password Found'; 
    } 
else 
    { 
    echo 'Username and Password NOT Found'; 
    } 
} 
else { 
print "Database NOT Found."; 
mysql_close($db_handle); 
} 

編輯: 當然,截至目前(2013年11月,由於很久以前),將mysql_ *功能確實已經過時了。顯然你現在可以使用相同的mysqli_ *函數(也許只是使用find/replace),但大多數人都在使用PDO。

3

試試這個您的SQL:

$result = mysql_query("SELECT 1 FROM my_table WHERE Username = " . mysql_real_escape_string($username)); 

注意:您應該考慮使用PDO

+2

應該使用mysql_real_escape_string()(它需要與數據庫打開連接)而不是mysql_escape_string()。我不知道你的意思是什麼「mysql接口」被棄用... –

+0

@ButtleButkus:你是對的,我讀了棄用信息,並認爲它引用了整個mysql_ *庫。更新後。 –

0
<?php 
$user=$_POST["user"]; 
$pass=$_POST["pass"]; 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "interior_design"; 
$db_handle = mysql_connect($servername,$username,$password); 
$db_found = mysql_select_db($dbname,$db_handle); 
if($db_found) 
{ 
$result = mysql_query("SELECT ssn,fname FROM admin WHERE ssn='$pass' and fname='$user'"); 
if ($result && mysql_num_rows($result) > 0) 
    { 
     echo 'Username and Password Found'; 
    //header('Location: index.html') ; 

    } 
else 
    { 
    echo 'Username and Password NOT Found'; 
    echo $pass; 
    echo $user;`` 
    } 
} 

else{ 
echo 'db nt found'; 

mysql_close($db_hanle); 
} 

?> 
<html> 
<body> 
<a href="login.html"><h2>LOGIN</h2></a> 
</body> 
</html>