我正在尝试将 mysqli 数据库连接传递给 php 类。我到目前为止的代码(为简单起见而删减)如下:
数据库.php
$db_host = 'localhost';
$db_name = 'dbname';
$db_user = 'username';
$db_password = 'password';
$db = array('db_host'=>$db_host,
'db_name'=>$db_name,
'db_user'=>$db_user,
'db_password'=>$db_password);
$dbCon = new mysqli( $db['db_host'],
$db['db_user'],
$db['db_password'],
$db['db_name']);
if (mysqli_connect_errno())
{
die(mysqli_connect_error()); //There was an error. Print it out and die
}
索引.php
<?php
require_once($_SERVER["DOCUMENT_ROOT"] . "/db.php");
$sql = "SELECT id FROM usr_clients";
$stmt = $dbCon->prepare( $sql );
if ($stmt)
{
$stmt->execute();
$stmt->bind_result($id);
while($stmt->fetch())
{
$cl = new Client($id, $dbCon);
$cl->doIt();
}
$stmt->close();
}
?>
客户端.php
<?php
Class Client
{
private $con;
public static $clientCount = 0;
public function __construct( $id, $con )
{
$this->con = $con;
$sql = "SELECT id FROM usr_clients WHERE id = $id";
$stmt = $this->con->prepare( $sql );
if ($stmt)
{
echo "it worked!";
}
else
{
echo "it failed";
}
}
}
?>
现在 index.php 页面成功识别了 db.php 中声明的数据库连接,并返回了所有客户端的列表。然后它遍历每个客户端,并创建一个“客户端”对象,将数据库连接传递给它。
问题似乎就是从这里开始的。在客户端类中,无法识别数据库连接。我在页面上收到多个错误,说“它失败了”。在日志中,有一行关于在非对象上调用 prepare() 。
谁能解释为什么连接在 index.php 中有效,但在客户端类中无效?
谢谢