Полностью потерян с помощью mysqli_real_escape_string

Вопрос:

Я рассматривал так много людей, имеющих эту же проблему, но ни одно из решений не имеет отношения/они не работают.

Во-первых, здесь мой простой код, чтобы сделать все просто:

<?php
$mysqli = new mysqli("localhost", "root", "", "pembsweb");
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
function mysqli_secure($string) {
$string = htmlspecialchars($string);
$string = trim($string);
if (get_magic_quotes_gpc()) {
$string = stripslashes($string);
}
$string = $mysqli->real_escape_string($string);
return $string;
}
echo mysqli_secure("lets\\test//this");
?>

Это вызывает ошибку:

Неустранимая ошибка: вызов функции-члена real_escape_string() для не-объекта в строке 13

Я чувствую себя действительно глупо и раздраженно сейчас. Может ли кто-нибудь мне помочь?

EDIT: Я попытался удалить все остальные строки из функции, поэтому все, что он делает, это реальный побег mysqli, и все равно ничего. Я также попытался определить $ string через $string = new stdClass(); на первой строке функции, и все равно ничего..

Лучший ответ:

$mysqli определяется в другой области, чем вы пытаетесь использовать в нем. Передайте его как аргумент.

<?php
$mysqli = new mysqli("localhost", "root", "", "pembsweb");
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
function mysqli_secure($mysqli, $string) {
        $string = htmlspecialchars($string);
        $string = trim($string);
        if (get_magic_quotes_gpc()) {
            $string = stripslashes($string);
        }
        $string = $mysqli->real_escape_string($string);
    return $string;
}
echo mysqli_secure($mysqli, "lets\\test//this");
?>

Оцените статью
TechArks.Ru
Добавить комментарий