превышен ли объем памяти? - PullRequest
3 голосов
/ 14 марта 2010

У меня есть форма, которая представляет данные в базу данных, у меня есть функция, которая выглядит следующим образом:

//connect 
foreach ($_POST as $key => $value) {
    $_POST[$key] = mysql_real_escape_string($value);
}

теперь, когда я публикую сообщение, иногда я получаю сообщение об ошибке:

Допустимый объем памяти 268435456 байт исчерпан

Я понял, что когда я делаю перевод строки или нажимаю ввод в поле сообщения, тогда это вызывает ошибку, иначе она работает нормально. есть идеи?

1 Ответ

1 голос
/ 14 марта 2010

Пожалуйста, попробуйте воспроизвести ошибку с

<code>$mysql = mysql_connect(...

printf("<pre>Debug: count(_POST)==%d
", count ($ _ POST)); foreach ($ _POST как $ key => & $ value) { printf ("
Debug: strlen(_POST[%s])==%d
", htmlspecialchars ($ key), strlen ($ value)); промывать(); $ value = mysql_real_escape_string ($ value, $ mysql); } Е ( "
Debug: Done.
");

Выводит ли это что-то «необычное» перед сообщением «Разрешенный объем памяти 268435456 байт исчерпан»?

edit and btw: мне не «нравится» то, как вы пытаетесь обработать real_escape_string по двум причинам:

  • Если возможно, оставьте _POST в покое, не меняйте его значения. (Я бы сделал исключение для удаления magic_quotes ;-))
  • Обрабатывайте только те поля, которые, как вы знаете, вам понадобятся. Не пишите функцию «кодировать и хранить в базе данных все, что есть в _POST», хотя это может звучать как хорошая идея и супер-многократно используемый код. Если вы хотите сохранить его несколько разным, передайте массив с описаниями функции. В этом массиве вы можете, например, хранить информацию, такую ​​как [имя поля формы, допустимый тип данных / правила проверки, имя поля базы данных]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...