我在PHP中遇到全局變量問題。我只包含以下數據mysqli的配置文件:PHP訪問全局變量的問題
$mysqli = new mysqli("localhost", "user", "pass", "db");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
我有另外一個文件下面的類:
class user{
function username_exists($username){
global $mysqli;
if ($stmt = $mysqli->prepare("SELECT username FROM users WHERE username=?")) {
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->store_result();
$count=$stmt->num_rows;
$stmt->close();
}
return ($count > 0 ? true : false);
}
...
some more functions
...
}
現在這個工作罰款,但在我previous question on SO,有人告訴我,訪問全局變量是一種不好的做法,就像我在上面的課程中所做的那樣。所以,我試圖通過全局變量在構造函數中,以下列方式:
private $mysqli;
function __construct()
{
global $mysqli;
$this->mysqli = $mysqli;
}
function username_exists($username){
//global $mysqli;
if ($stmt = $this->mysqli->prepare("SELECT username FROM users WHERE username=?")) {
,我得到以下錯誤:
Fatal error: Call to a member function prepare() on a non-object in...(line number)
能否請你告訴我什麼問題它以及如何解決這個問題?謝謝。 編輯:對不起__construct的拼寫錯誤。這裏輸入的只是錯誤,而錯誤不是因爲這個。
爲什麼ü寫'專用$ mysqli的;'最後的代碼塊 – diEcho 2011-03-07 13:09:10