簡體   English   中英

PHP,MySQL表查詢語法錯誤?

[英]PHP, MySQL table query syntax error?

我希望有人可以幫助您查看這里出了什么問題:我有一個包含兩個字段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 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
$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'];
}
?>

任何意見,將不勝感激。

您缺少字符串字段周圍的引號:

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

另外,

extract(mysql_fetch_assoc($result));  

將從數據庫中獲取第一行,因此while循環將從第二行開始。

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

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

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

(介意額外''大約$電子郵件)

您的查詢翻譯為:

SELECT * FROM emloyee WHERE email = foo@bar.com

這不起作用,您必須將字符串放在引號中。 將您的代碼更改為以下代碼,它將起作用:

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

僅將變量'$ email'單引號,因為它是varchar類型的value和field。 如所寫,達哈澤:)

完整的固定代碼:

<?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'];
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM