使用MySQLi时,在非对象上调用成员函数real_escape_string()

时间:2015-03-13 03:03:21

标签: php mysql mysqli

我已尝试在有关此主题的其他问题上发布的每个解决方案,但都不起作用。

对不起,如果这是一个基本问题,但我是MySQLi的新手,我无法弄清楚为什么这种联系不起作用。

我的functions.php文件中有一个函数:

function cleanInput($string) {
    $stripsql = $connect->real_escape_string($string);
    $addslashes = addslashes($stripsql);
    return $addslashes;
}

第二行是在标题中抛出该错误。

我确实连接到数据库,$connect是一个工作变量。它使用以下命令在config.php中设置:

$connect = new mysqli('localhost', 'shop', 'password', 'zen');

我甚至尝试在功能之前移动该线路无效。

functions.php文件中var_dump上的$connect不返回NULL,它返回有关以object(mysqli)#1 (19) { ["affected_rows"]=> int(0)开头的数据库的数据,然后继续大量行。

1 个答案:

答案 0 :(得分:7)

目前,$connect超出了范围,只需将其添加到参数中:

$connect = new mysqli('localhost', 'shop', 'password', 'zen');
function cleanInput($connect, $string = '') {
    if(!empty($string)) {
        $stripsql = $connect->real_escape_string($string);
        return $stripsql;
    }
}
$my_string = 'your string here';
$escaped_string = cleanInput($connect, $my_string);

旁注:或者,如果可以,您也可以使用准备好的陈述。