一段时间以来遇到此错误,无法找到修复它的任何结论性答案。我已尝试在第59行删除$key
中的引号,但无济于事。
if (!get_magic_quotes_gpc()) {
if (isset($_POST)) {
foreach ($_POST as $key => $value) {
$_POST['$key'] = trim(addslashes($value));
}
}
if (isset($_GET)) {
foreach ($_GET as $key => $value) {
$_GET[$key] = trim(addslashes($value));
}
}
}
第59行
$_POST['$key'] = trim(addslashes($value));
屏幕错误
注意:数组转换为字符串 C:\ Inetpub \ vhosts \ domain.com \ httpdocs \ library \ config.php on 第59行
答案 0 :(得分:2)
在分配之前检查它是否是数组
$_POST[$key] = !is_array($value) ? trim(addslashes($value)) : '';
// ^ Remove the quotes here // ^ Do something
// Instead of
// Using empty
答案 1 :(得分:0)
我认为您应该使用此代码$_POST[$key] = $value;
而不是使用此$_POST['$key'] = trim(addslashes($value));
或检查值是否在数组中
答案 2 :(得分:0)
根据PHP.net,函数addslashes()将String类型作为参数。检查$ value的类型。如果它是一个数组本身,那么addslashes()可能会抛出错误。
PS: 如果你想使用$ key的值作为$ _POST数组的索引,你应该使用$ _POST [$ key]而不是$ _POST ['$ key']。
答案 3 :(得分:0)
这样做:
foreach ($_POST as &$value) {
$value = is_array($value) ?
array_map(function($x) { return trim(addslashes($x)); } :
trim(addslashes($value));
}
但是,如果您的任何参数是多维数组,则仍可能失败。正如评论中所提到的,正确的解决方案是使用带参数的预准备查询,而不是将字符串插入到SQL中。