2014-11-21 85 views
0
foreach($article AS $key => $value) 
{ 
    mysql_query("UPDATE articles SET description = '".mysql_real_escape_string($value)."' WHERE id = '".$key."'"); 
} 

嗨,大家好,UPDATE語句不會被觸發新的服務器上

我有一個非常簡單的foreach循環,在那裏我運行一個UPDATE查詢。是的,我知道我應該使用PDO,但我只是測試它,所以不用擔心。 $ key and $ value are not null。我已經證實他們的價值觀是預期的。 $ value包含一個字符串,其中包含多個\ n(新行)。

現在腳本在我的服務器上工作,但只要我在另一臺服務器上嘗試它,UPDATE語句不會被觸發。沒有錯誤或警告。看來其他服務器不喜歡$ value的內容。事實上,如果我用「abc」替換$ value,它就可以工作。所以我在這裏試圖理解什麼是問題。然後? mysql_real_escape_string?我應該怎麼做才能調試這個問題?

+0

如果您只是在學習PHP,請不要學習過時的'mysql_query'界面。這很糟糕,並且在未來版本的PHP中被刪除。像[PDO這樣的現代化替代品並不難學](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。像[PHP The Right Way](http://www.phptherightway.com/)這樣的指南可以幫助解釋最佳實踐。永遠絕對**肯定**你的用戶參數[正確逃脫](http://bobby-tables.com/php),否則你會有嚴重的[SQL注入漏洞](http://bobby-tables.com/ )。 – tadman 2014-11-21 19:54:36

+0

嘗試讀取錯誤日誌。 – 2014-11-21 19:54:50

+2

所以測試錯誤,不要只是假設成功:'mysql_query(...)或死(mysql_error())'。 – 2014-11-21 19:57:46

回答

-1
foreach($article AS $key => $value) 
{ 
    mysql_query("UPDATE articles SET description='{mysql_real_escape_string($value)}' WHERE id='{$key}'"); 
} 

試試這個

0

對不起,是我不好。該腳本起作用。這是由於我的雲實例的CDN緩存相關的解釋非常複雜和漫長。我勒個去!抱歉。