mysqli データベース接続を php クラスに渡そうとしています。私がこれまでに持っているコード (簡単にするために省略) は次のとおりです。
db.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
}
index.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();
}
?>
client.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 では機能するのに、クライアント クラスでは機能しない理由を説明できる人はいますか?
ありがとう