我想通過一個mysqli數據庫連接到php類。我迄今爲止(削減爲簡單起見)的代碼如下:無法通過mysqli連接到類
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工作,但不是在客戶端類?
感謝
您是否嘗試過在您的數據庫方法中實際提供錯誤處理邏輯以查看您正在收到的失敗消息? –
我已經嘗試了好幾次,雖然大部分時候我都在嘗試使用單例模式。我得到的唯一的失敗消息是關於非對象的$ this-> con> prepare()。 – Typhoon101