我已经在我的方法中定义了我的连接。但是,我希望能够创建此连接的实例,以便在登录页面上使用。
通常情况下,我在页面上这样做的方式有插入、选择等。
$con = new dbclass(); //class where my methods are housed
$con-> createcon(); //create con has the connection handler, ($con=mysqli_connect(x.x.x.x)
公平地说,我经常用这个。然而,我在登录页面上的这个过程没有任何运气。这似乎不够。返回的错误为:
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, object given in C:'xampp'htdocs'a'login.php on line 103
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, object given in C:'xampp'htdocs'a'login.php on line 104
Warning: mysqli_query() expects parameter 1 to be mysqli, object given in C:'xampp'htdocs'a'login.php on line 109
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:'xampp'htdocs'a'login.php on line 111
这是一段返回错误的示例代码:
$user = mysqli_real_escape_string($con, $user);
到目前为止,我只在类中的更新方法上使用过real_escape_string。通过执行这个,我设法满足了real_escape_string上的连接处理程序要求
$esc_id = mysqli_real_escape_string($this->conn, $id);
所以我的问题是,我是否需要在登录页面上创建一个实例。如果是,怎么做?
$con=新dbclass();
但是你还没有向我们展示这个类的来源。
$con->createcon()//create-con具有连接处理程序($con=mysqli_connect(x.x.x)
这个评论没有任何意义。mysqli_connect()的返回值放在哪里?如果它在局部变量中,那么在方法返回后,它将不再可访问。它需要存储在某个地方,以便将其传递给mysqli_functions(),例如
class dbclass {
var $dbhandle;
function createcon() {
$this->dbhandle=mysqli_connect(...);
}
}
$con=new dbclass();
$con->createcon();
// then you can do....
$user = mysqli_real_escape_string($con->dbhandle, $user);
$user = mysqli_real_escape_string($con, $user);
在此代码中,您错误地使用了变量类。替换为以下代码:
$user = mysqli_real_escape_string($con->$con, $user);
类中的变量$con应为public。