2010-06-03 77 views
0

我在SQL查詢execution.I一個問題就是使用此SQL查詢:有問題

$userid = 1; 

$sql = mysql_query(" 
    SELECT ID, Nm, Address, date_format(DateOfBirth, '%d%M%Y') as DateOfBirth 
    FROM PersonalDetails where UserMasterID = $userid 
") or die (mysql_error()); 

結果顯示爲:

你在你的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在第1行使用正確的語法'= '在第1行

當我在PHPMyAdmin中執行此操作時,它正常工作。 我使用mysql(5.0.5b)和PHP(5.2.6)

你能幫助我嗎?

+0

不能執行*此*在phpMyAdmin。因爲這是PHP代碼,並且PHPMyAdmin只能理解SQL – 2010-06-03 09:55:49

回答

5

如果UserMasterID不是整數,你可能需要把周圍的值引號:

PersonalDetails where UserMasterID = '$userid'" 

查詢你在上面引述的等同於你在phpMyAdmin運行什麼。它包含一個PHP變量。 當遇到SQL故障時,總是輸出並分析解析的查詢(不包含對其中的PHP變量的引用)。

$query = "select ID... etc. etc."; 
$result = mysql_query($query); 

if (!$result) 
echo "Error in query $query: ".mysql_error(); 

90%的問題可以通過這種方式發現和解決。

+0

,所以忘記了將自己的查詢添加到調試消息中:)並且您可能會從我的帖子中注意到我通過echo將trigger_error用法普及。您可能會發現它非常有用。 – 2010-06-03 10:04:23

+0

@Col yup,我也喜歡'trigger_error',好點。但'$ query'在那裏,不是嗎?或者我忽略了什麼? – 2010-06-03 10:12:10

+0

我運行查詢在phpmyadmin通過傳遞1給usermasterid而不是php變量,我的朋友。 – Rishi2686 2010-06-03 10:48:56

0

如果它在PHPMyAdmin中正確運行,但不在PHP代碼中,那麼對我說PHPMyAdmin正在執行它是着名的任務,即逃避和消毒所有可能的任務。

更改您的代碼並檢查它。

$userid = 1; 

$sql = mysql_query(" 
    SELECT `ID`, `Nm`, `Address`, date_format(`DateOfBirth`, '%d%M%Y') as DateOfBirth 
    FROM `PersonalDetails` where `UserMasterID` = '{$userid}' 
") or die (mysql_error()); 

它應該現在運行。

+1

如果你打算貶低我(不管它是誰),至少應該對它做出評論。 – Joseph 2010-06-03 14:14:32

-2

Ehhh - 你爲什麼不連接?

"SELECT `ID`, `Nm`, `Address`, date_format(`DateOfBirth`, '%d%M%Y') as DateOfBirth 
FROM `PersonalDetails` where `UserMasterID` = '" . $userid . "'"; 

但約瑟夫是當場就...

+0

請不要以這種方式編寫查詢......它暴露了各種安全風險,如SQL注入攻擊。 – Fenton 2010-10-15 07:04:09

+0

這種情況並不是關於安全性 - 而是關於語義和語法 - 尤其是奇數/撇號 – Mike 2011-10-04 07:27:26

+0

即使如此,當我們回答Stack Overflow時,我們需要強調這些問題以幫助人們編寫安全的應用程序。 – Fenton 2011-10-04 07:40:53