繁体   English   中英

PHP注意:数组到字符串转换错误

[英]PHP Notice: Array to string conversion Error

一段时间以来遇到此错误,无法找到解决问题的任何结论性答案。 我试过在第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));

屏幕上出错

注意:第59行的C:\\ Inetpub \\ vhosts \\ domain.com \\ httpdocs \\ library \\ config.php中的数组到字符串转换

在分配之前检查它是否是数组

$_POST[$key] =  !is_array($value) ? trim(addslashes($value)) : '';
   //  ^   Remove the quotes here                          //  ^ Do something 
                                                           //  Instead of 
                                                           //  Using empty

我认为你应该使用这段代码$_POST[$key] = $value; 而不是使用这个$_POST['$key'] = trim(addslashes($value));

或者检查值是否在数组中

根据PHP.net ,函数addslashes()接受String类型作为参数。 检查$ value的类型。 如果它是一个数组本身,那么addslashes()可能会抛出错误。

PS:如果你想使用$ key的值作为$ _POST数组的索引,你应该使用$ _POST [$ key]而不是$ _POST ['$ key']。

做这个:

foreach ($_POST as &$value) {
    $value = is_array($value) ?
        array_map(function($x) { return trim(addslashes($x)); } :
        trim(addslashes($value));
}

但是,如果您的任何参数是多维数组,则仍可能失败。 正如评论中所提到的,正确的解决方案是使用带参数的预准备查询,而不是将字符串插入SQL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM