2014-10-07 37 views
0

這段代碼應該使用已存儲在表中的密碼從我的數據庫中檢索數據。對於一些通過網絡表單輸入的密碼,它的行爲是正確的。對於其他人來說,它並不是。我花了很長時間試圖修復它,但不能。我懷疑下面的代碼中有PHP-SQL錯誤

<?php 
include('connect.php'); 

$login = $_POST['login']; 
$query = mysql_query("select * from secure_table where myPass = $login"); 
$row = mysql_fetch_array($query)); 

if($_POST['login'] = $row['myPass']) 
{ 
    echo"<div align ='center'>"; 
    echo "Your Details are:"; 
    echo $row['surName']; 
    echo"<br/>"; 
    echo $row['firstName']; 
    echo"<br/>"; 
    echo $row['myDepartment']; 
    echo"</div>"; 

} 
else{ 
echo "<div align = 'center'>; 
    <h2>Error in Password</h2> 
</div>"; 
} 
mysql_close($connection) 
?> 
+0

書面您的迴音在else子句需求刪除第一個分號----> echo「

」; – 2014-10-07 03:22:41

+0

代碼中有幾處語法錯誤。修復這些問題,然後讓我們知道是否有問題。 – EternalHour 2014-10-07 03:25:40

+1

請成爲你的錯誤日誌的好朋友...我們最終都會這樣做,不妨現在就開始 – 2014-10-07 03:32:20

回答

4

,你需要改變這一行以及

if($_POST['login'] = $row['myPass']) 

對此

if($_POST['login'] == $row['myPass']) 

//使用雙相等比較。單等於是賦值運算符。

$query = mysql_query("select * from secure_table where myPass = $login"); 

您的查詢是錯的,如果$登錄是不是和整數

改變這種

$query = mysql_query("select * from secure_table where myPass = '$login'"); 

檢查此鏈接

http://dev.mysql.com/doc/refman/5.0/en/identifier-qualifiers.html

你有多餘的)刪除此在這一行

$row = mysql_fetch_array($query)); 

這個

$row = mysql_fetch_array($query); 

,因爲它寫的和獨一無二ChemistryBlob指出來去除semicolumn;在來自該行的 else語句

echo"<div align = 'center'>; 

一個更認爲mysql_功能的depricited。

使用mysqli_功能或PDO

對於mysqli_功能檢查這個環節http://php.net/manual/en/book.mysqli.php

FOR PDO檢查此鏈接http://php.net/manual/en/book.pdo.php

+0

OP需要讓我們知道如果$ login只是數字...如果是這樣的OP的查詢是OK – 2014-10-07 03:20:18

+0

@TheOneandOnlyChemistryBlob謝謝我更新它。張貼後。我意識到。感謝您的反饋 – 2014-10-07 03:22:15

+0

正如所寫的,OP的代碼至少有2個錯誤...所有錯誤可能在這裏貢獻......但您的答案是好的...... + 1 – 2014-10-07 03:24:38