2013-03-19 16 views
-1

我有這個疑問:WHERE查詢不正常

$queryfile = "UPDATE Glasovi 
      SET Fotografija='$content', 
      MD5Slike='$checksum' 
      WHERE Email ='$email'"; 

它不會更新數據庫。

當我WHERE子句中直接寫郵件,它的工作原理:

$queryfile = "UPDATE Glasovi 
       SET Fotografija='$content', 
       MD5Slike='$checksum' 
       WHERE Email ='[email protected]'"; 

我試圖呼應$email變量,它具有正確的值。 第一個查詢中的錯誤在哪裏?

+3

做'的var_dump($ queryfile)',看看吧,如果您需要幫助,請將其添加到您的問題:-) – michi 2013-03-19 23:13:50

+0

我沒有發現您的查詢語法有任何問題。仔細檢查所有變量,數據庫的內容以及您在問題中發佈的代碼。 – 2013-03-19 23:38:03

+0

我今天試過查詢,它的工作原理。似乎服務器發生了一些事情。 – user1455966 2013-03-20 07:24:34

回答

1

你的要求就可以了,所以你應該檢查你的變量是在PHP中,使用var_dump($email)

- 編輯 -

您的要求似乎並不是安全的,你應該使用PDO語句使其免受SQL注入的影響

+0

「,當你使用'$ email'發送字符串$ email」。這不是真的。剛剛嘗試在PHP 5.3.10。文檔也沒有說明這一點。 – 2013-03-19 23:29:57

+0

好的我測試並編輯了我的文章,ty爲你的精確度,你現在可以刪除你的投票了,它不值得:) – Acuao 2013-03-19 23:38:27

+0

我的觀點仍然有效。你的字符串插值語句是錯誤的。 – 2013-03-19 23:40:54

-2

您尚未將您的變量與您的字符串連接起來。

你的代碼改成這樣:

$queryfile="UPDATE Glasovi SET Fotografija=' . $content . ', MD5Slike=' . $checksum . ' WHERE Email =' . $email . '"; 
+0

他不需要連接,因爲他使用'''而不是'''容器... 你可以把變量放在''' – Acuao 2013-03-19 23:24:00

+0

裏面,你用一個字符串用'''調整並用''結束'在你的例子中......但除了這兩件事,它會工作 – Acuao 2013-03-19 23:25:17

+0

哦,是的,是習慣的力量 – 2013-03-19 23:30:10

1

您的查詢看起來是正確的。我能看到的唯一問題是其中一個變量包含單引號,這可能會導致您的錯誤。

嘗試使用和addslashes逃避任何單引號中的變量

$queryfile = "UPDATE Glasovi 
SET Fotografija ='".addslashes($content)."', 
MD5Slike ='".addslashes($checksum)."' 
WHERE Email ='".addslashes($email)."'"; 

這樣做也將有助於防止由單引號SQL注入

+0

+1查詢中的安全問題很明顯,我沒有想到'$ content'變量中可能存在的問題。 – 2013-03-19 23:43:07