我需要帮助才能使最后一个功能正常工作。数据库连接正常。函数display_all($ id)不起作用。当我调用它时它不会显示结果,因为您可以从创建的新瞬间看到下面的内容。请有人帮助我。感谢
<?php
class connect_dbase
{
public function connection($host="localhost",$user="root",$password="london",$db_name="users")
{
$mysqli=new mysqli($host,$user,$password,$db_name);
if ($mysqli->connect_error) {
die('Connect Error: ' . $mysqli->connect_error);
}
else
{
echo " Database connection successful";
}
}
public function display_all($id)
{
if($stmt = $mysqli->prepare("SELECT name,email,address FROM user WHERE id =?"))
{
/* bind parameters for markers */
$stmt->bind_param('i',$id);
/* execute query */
$stmt->execute();
if($stmt->num_row() >0)
{
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// do something with $row
echo $row['name']. $row['email']. $row['address'];
}
}
else
{ echo "no result found";}
}
else
{
echo "cant prepare result";
}
}
}
$connect_dbase=new connect_dbase();
$connect_dbase->connection();
$connect_dbase->display_all(3);
?>
答案 0 :(得分:0)
你的mysqli对象不在实例范围内,我不知道为什么你没有收到任何警告。由于您在OO模式下使用它,您需要将它声明为您正在使用它的类,因此它知道要去哪里。
class connect_dbase {
private $mysqli;
然后看起来是创建连接对象的构造函数。
public function connection($host="localhost",$user="root",$password="london",$db_name="users")
{
$this->mysqli=new mysqli($host,$user,$password,$db_name);
//rest of your code
然后,您需要访问mysqli对象的任何其他地方只需调用$ this-&gt; mysqli即可在您的实例中访问它。
答案 1 :(得分:0)
首先,您需要声明私有或公共类变量$ mysqli
class connect_dbase {
private $mysqli;
...
比你使用这样的变量:
public function display_all($id) {
if($stmt = $this->mysqli->prepare("SELECT...
答案 2 :(得分:0)
$ mysqli 变量超出 display_all 方法的范围。 您应该使用类变量:
class connect_dbase{
private $mysqli; //Or public/protected
public function connection($host="localhost",$user="root",$password="london",$db_name="users")
{
$this->mysqli = new mysqli($host,....);
.....
}
public function display_all($id)
{
if($stmt = $this->mysqli->prepare("SELECT name,....);
....
}
}