php - PHP:在类内使用 DB 连接
问题描述
我正在从 PHP5.6 更新到 PHP7.0,这不再起作用:
$con=mysqli_connect(DATABASE_SERVER,DATABASE_USER,DATABASE_PASSWORD) or die(DATABASE_ERROR);
mysqli_select_db($con, DATABASE_NAME) or die(DATABASE_ERROR);
class DoSomeStuff()
{
function GetSomeDate()
{
$result=mysqli_query($con, "SELECT * FROM my_table");
}
}
看起来 $con 变量在类中不可用。
我必须这样做吗?
global $con=mysqli_connect()
谢谢!
解决方案
使用的主要模式类似于将数据库连接传递给构造函数(依赖注入),然后将其存储在实例变量中($this->con
在本例中)。然后稍后的数据库调用仅$this->con
用于数据库连接......
$con=mysqli_connect(DATABASE_SERVER,DATABASE_USER,DATABASE_PASSWORD) or die(DATABASE_ERROR);
mysqli_select_db($con, DATABASE_NAME) or die(DATABASE_ERROR);
class DoSomeStuff
{
private $con;
// Create instance with connection
public function __construct( $con ) {
// Store connection in instance for later use
$this->con = $con;
}
public function doSomething() {
// Run query using stored database connection
$result=mysqli_query($this->con, "SELECT * FROM my_table");
}
}
// Create instance, passing in connection
$some = new DoSomeStuff ($con);
$some->doSomething();
推荐阅读
- python - 如何在制作数组时不出现 indexerror
- tensorflow - Tensorflow:在 tf.gradients() 期间忽略特定依赖项
- r - 如何从 coxph 中提取极小的 p 值而不将其舍入为 0?
- css - 如何在 Material UI 中设置下拉菜单位置
- excel - 工作簿刮板问题
- python - 如何防止matplotlib中轴偏移的科学记数法?
- c++ - 基于循环的多成员 constexpr struct 初始化
- javascript - atom.io:通过 Javascript 注释中的可点击链接打开文件
- python - 使用 unstack() 进行 Pandas Groubpy 绘图
- swift - 如何将 UIColor 转换为黑白 UIColor