【发布时间】:2014-01-14 14:35:31
【问题描述】:
我正在尝试建立数据库连接并检查表中的现有数据。但是我收到此错误,但我无法找到原因:
警告:mysqli::query():无法获取 mysqli in /usr/share/nginx/www/me/container/class_lib.php上线 33
警告:mysql_fetch_assoc() 需要 参数 1 为资源,在 /usr/share/nginx/www/me/container/class_lib.php上线 97
class dbHandler {
static $dbObj = null;
protected $db_host = 'localhost'; #db host
protected $db_username = 'user'; #db username
protected $db_password = 'password'; #db password
protected $db_name = 'db'; #db name
function __construct()
{
# connect if not connected
if(self::$dbObj === null)
{
self::$dbObj = new mysqli($this->db_host, $this->db_username, $this->db_password, $this->db_name)
or die($this->dbObj->error);
}
mysqli_set_charset(self::$dbObj, "utf8");
}
// query: query the db
public function query($query)
{
return self::$dbObj->query($query);
}
}
/*
class userLogin
create user login
*/
class userLogin {
private $username;
private $password;
function __construct($username, $password) {
$this->_dbConn = new dbHandler();
$this->username = $username;
$this->password = $password;
}
public function verifyCredentials() {
if($this->verifyUsername())
{
} else {
exit;
}
if($this->verifyPassword())
{
} else {
exit;
}
}
private function verifyUsername() {
if(!(preg_match('/[^a-z_\-0-9]/i', $this->username)))
{
return true;
}
}
private function verifyPassword() {
$query = "SELECT * FROM tbl_user";
$result = $this->_dbConn->query($query);
$row = mysql_fetch_assoc($result);
var_dump($row);
}
}
我在这里做错了什么?
【问题讨论】:
-
此外,即使 tbl_user 表中有数据,任何转储或打印 $row 都会返回 NULL。
-
你在哪里创建类实例?
-
我使用 $username = $_POST['username']; 在这个 class_lib 之外调用这个类$password = $_POST['密码']; $login = new userLogin($username, $password); $login->verifyCredentials();然后我在 userLogin 构造函数中调用 db 处理程序。
-
mysql_fetch_assoc($result)在 verifyPassword 函数中应该是mysqli。 -
仍然返回相同的错误和 NULL。