我已经看过这么多人有这个相同的问题,但没有解决方案是相关/他们没有工作。完全失去了与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");
?>
这将导致错误:
Fatal error: Call to a member function real_escape_string() on a non-object on line 13
我感觉真的很愚蠢,激怒现在..谁能帮我?
编辑:我试图从功能删除所有其他行,因此,所有它做的是mysqli的世外桃源,仍然没有。我也试图通过$string = new stdClass();
在功能上的第一行定义$字符串,但仍然没有任何结果。
这是一个范围问题;你的'$ mysqli'对象不在你的函数中。 – andrewsi
它不在范围内? :/它保持开放,当然我不需要在使用资源的每个函数中重新定义一个mysqli连接? – Chuckun
不,但您需要将它传递给函数。处理这个问题的更好方法是使用一个类,其中每个函数都可以使用连接作为对象属性。 – deceze