bellek boyutu aştı?

1 Cevap php

i bu gibi bir işlevi var, bir veritabanına veri gönderen bir form var:

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

i sonrası ne zaman şimdi, BAZEN ben bu diyor bir hata alıyorum:

Bitkin 268435456 bayt İzin bellek boyutu

i ileti alanına girdiğiniz bir satır aralığı, ya da basın ne zaman, hataya neden olur, aksi takdirde normal çalıştığında, o olduğunu anladım. herhangi bir fikir?

1 Cevap

Ile hata yeniden deneyin

$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>");

Bu yazdırma önce "sıradışı" bir şey mesaj "268435456 bayt İzin bellek boyutu tükendi" mı?

düzenlemek söyliyim: ben arada "gibi" iki nedenden dolayı real_escape_string thingy işlemek için çalışıyoruz değilsiniz:

  • Mümkünse, onun değerlerini değiştirmez yalnız 'POST bırakın. (Ben ;-) olsa felâket magic_quotes için bir istisna yapmak istiyorum)
  • Sadece size ihtiyacınız olacak bilenler alanları işlemek. Iyi bir fikir ve süper-yeniden kullanılabilir kod gibi gelebilir ama işlevi bir "_POST olduğu veritabanı her şeyi kodlamak ve saklamak" yazmayın. Bunu tutmak istiyorsanız, biraz yeniden işlevine açıklamaları ile bir dizi geçmektedir. Bu dizide sizi yerleştirilmek yapabilirsiniz [form alanının adını, izin veri türü / doğrulama kuralları, veritabanı alan adı] gibi mağaza bilgileri