請嘗試重現錯誤與
$mysql = mysql_connect(...
printf("<pre>Debug: count(_POST)==%d</pre>", count($_POST));
foreach ($_POST as $key => &$value) {
printf("<pre>Debug: strlen(_POST[%s])==%d</pre>", htmlspecialchars($key), strlen($value)); flush();
$value = mysql_real_escape_string($value, $mysql);
}
printf("<pre>Debug: Done.</pre>");
請問消息「的268435456個字節用盡允許的內存大小」在此之前印刷的東西「不尋常」?
編輯和BTW:我不「喜歡」你想處理real_escape_string啄的原因有兩個方式:獨自如果可能的話
- 離開彥博,不改變其值。 (雖然;我會爲撤銷magic_quotes作例外)-)
- 只處理那些你知道你將需要的字段。儘管這聽起來像是一個好主意和超可重用的代碼,但不要編寫「在數據庫中編碼和存儲_POST中的所有東西」函數。如果你想保持一定的可重用性,就可以通過一個數組來描述函數。在該陣列中,您可以存儲信息如[表單域的名稱,允許的數據類型/驗證規則,數據庫字段名稱]
你是否同時發佈圖片?你試圖發佈的信息有多大?你確定問題出在你發佈的代碼上嗎?由於代碼看起來很簡單,看起來很奇怪。對於測試,你有沒有嘗試刪除mysql_real_escape_string()調用,例如。與addslashes()。 – 2010-03-14 00:09:20
我認爲PHP將在您的POST集合副本上運行foreach,但它仍然被認爲是不好的做法,修改您實際迭代的集合。 – jishi 2010-03-14 00:17:54