2011-09-26 74 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']; 
} 
?>