2011-09-26 116 views
1

我希望有人可以幫助看看這裏有什麼問題: 我有一個表格,有兩個字段EMAILPASSWORD,打開一個php頁面,我打算在表格上運行一個簡單的查詢。 我收到一條沒有意義的錯誤消息:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@gmail.com' at line 1
我在這種情況下,輸入的電子郵件地址並用「@ gmail.com」
下面的代碼結束:PHP,MySQL表查詢語法錯誤?

<?php 
$dbhost = 'somewhere.net'; 
$dbuser = 'someUser'; 
$dbpass = 'pass'; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 

$dbname = 'medreunten_db1'; 
mysql_select_db($dbname) or die(mysql_error($conn)); 

$email = mysql_real_escape_string($_POST['email']); 

$query = "SELECT * FROM employee WHERE email = $email"; 
$result = mysql_query($query, $conn) or die (mysql_error($conn)); 
extract(mysql_fetch_assoc($result)); 


while ($row = mysql_fetch_array($result)) { 
extract($row); 
echo $row['name']; 
echo $row['surname']; 
echo $row['age']; 
} 
?> 

任何意見,將不勝感激。

+0

的可能重複(http://stackoverflow.com/questions/7546072/simple-table-query -syntax-error) – Quentin

+0

'$ query =「SELECT * FROM employee WHERE email ='$ email'」;'OR '$ query =「SELECT * FROM employee WHERE email =」。$ email;' – Ehtesham

+0

yes。我遇到了更多的問題,因爲我在db連接之前插入了mysql_real_escape_string,並且我想在該線程中繼續,但是我認爲我已經評論過,並且這是不可接受的,所以mods刪除了它並且使我無法使用。所以我開始了一個新的問題。 – Max

回答

4

你缺少周圍的字符串字段報價:

$query = "SELECT * FROM employee WHERE email = '$email'"; 

此外,

extract(mysql_fetch_assoc($result)); 

會從數據庫中讀取第一行,所以你的while循環將從第二排發車。

+0

感謝您指出,我修正了這兩個錯誤,它的工作:) – Max

0

您必須將值放入SQL字符串中的引號內。

$email = mysql_real_escape_string($_POST['email']); 

$query = "SELECT * FROM employee WHERE email = '$email'"; 

(介意周圍$電子郵件額外''

0

您的查詢翻譯爲:

SELECT * FROM emloyee WHERE email = [email protected] 

這是不行的,你必須把字符串引號。你的代碼更改爲以下,也將努力:

$query = "SELECT * FROM employee WHERE email = '$email'"; 
0

只是單引號的變量「$電子郵件」,因爲它爲varchar類型值和領域。 作爲寫道,Darhazer :)

0

完全固定碼:?簡單的表查詢語法錯誤]

<?php 
$dbhost = 'somewhere.net'; 
$dbuser = 'someUser'; 
$dbpass = 'pass'; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 

$dbname = 'medreunten_db1'; 
mysql_select_db($dbname) or die(mysql_error($conn)); 

$email = mysql_real_escape_string($_POST['email']); 

$query = "SELECT * FROM employee WHERE email = '$email'"; 
$result = mysql_query($query, $conn) or die (mysql_error($conn)); 
extract(mysql_fetch_assoc($result)); 


while ($row = mysql_fetch_array($result)) { 
extract($row); 
echo $row['name']; 
echo $row['surname']; 
echo $row['age']; 
} 
?>