我有一个向数据库提交数据的表单,我有一个如下所示的函数:
//connect
foreach ($_POST as $key => $value) {
$_POST[$key] = mysql_real_escape_string($value);
}
现在当我发帖的时候,有时我会收到一个错误,上面写着:
已耗尽268435456字节的允许内存大小
我发现当我执行换行操作,或者在消息字段中按enter键时,就会导致错误,否则它会正常工作。有什么想法吗?
最佳答案
请尝试用
$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字节耗尽”消息之前打印了“不寻常”的内容?
编辑和顺便说一句:我不“喜欢”你处理真实字符串的方式有两个原因:
如果可能,请不要更改post的值。(不过,我会破例撤销魔法引号;-))
只处理那些你知道你需要的字段。不要编写“encode and store in the database everything is in _post”函数,尽管这听起来可能是一个好主意和超级可重用代码。如果您想保持它的可重用性,请向函数传递一个带有描述的数组。在该数组中,您可以存储诸如[表单字段名称、允许的数据类型/验证规则、数据库字段名称]之类的信息。
关于php - 内存大小超出了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2440541/