我正在尝试通过在 PHP 中创建数据库类来更清晰地学习面向对象编程。
这就是我现在拥有的。当我尝试使用 $db->query();
调用它时,我收到有关 $mysqli 是 undefined variable 的错误请解释如何定义变量$mysqli。
<?php
class phpDatabaseClass {
public function __construct()
{
$mysqli = new mysqli(DBhost, DBusername, DBpassword, DBname);
}
public function query()
{
$sql = 'select * from users';
$results = $mysqli->query($sql);
if(($results->num_rows) > 0)
{
echo 'We have: '.$results->num_rows;
}
}
}
?>
在另一个文件中,我正在实例化对象,然后调用这样的函数:
require 'phpDatabaseClass.php';
define('DBhost', 'localhost');
define('DBusername', 'root');
define('DBpassword', 'root');
define('DBname', 'campbellCustomCoatings');
$db = new phpDatabaseClass();
$db->query();
最佳答案
您的 mysqli
实例需要成为您的类的成员,请看这里...
class phpDatabaseClass {
private $mysqli;
public function __construct()
{
$this->mysqli = new mysqli(DBhost, DBusername, DBpassword, DBname);
}
public function query()
{
$sql = 'select * from users';
$results = $this->mysqli->query($sql);
if(($results->num_rows) > 0)
{
echo 'We have: '.$results->num_rows;
}
}
}
另外,因为你正在学习,所以尝试扩展 PDO 类以了解继承。
此外,稍微有点切线,但常量通常以 ALL_CAPS_WITH_UNDERSCORE_SEPARATORS
命名。
此外,全局定义中的数据库内容可能存在风险,因为每个 PHP 片段都可以访问它。我知道 WordPress 会这样做,但请相信我,它的代码质量值得怀疑。然而,它的受欢迎程度无疑是巨大的。
关于php - OO数据库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3115729/