php - 在 PHP 对象中连接到 MDB2

标签 php mysql connection persistent mdb2

$dsn="mysql://$db_username:$db_password@$db_hostname/$db_database";
global $mdb2;
$mdb2=MDB2::connect($dsn);
if (PEAR::isError($mdb2))
{
    die($mdb2->getMessage());
}

我这样做是为了连接到我的数据库,我将它放在一个名为 Connect.php 的单独 php 文件中,并在我的所有页面上都需要它。

但是,当我必须在函数内部查询时,我必须将 $mdb2 作为参数传递给函数吗?这是正确的做法吗?

此外,我正在编写一个将查询我的数据库的类。而且我不知道该怎么做(我不想将其作为参数传递)

我是否必须每次都重新建立连接(即编写连接函数)

你不能使连接持久化和全局化吗?

最佳答案

您可以在所有页面上引用您的文件 Connect.php,并且每个需要使用连接的函数都可以引用 global 变量 $ mdb2.

例如:

# In file Connect.php

<?php
$dsn="mysql://$db_username:$db_password@$db_hostname/$db_database";
$mdb2=MDB2::connect($dsn);
if (PEAR::isError($mdb2))
{
    die($mdb2->getMessage());
}


#In any other file

<?php
require_once "Connect.php";
getUser($id) {
    global $mdb2;
    $mdb2->query("SELECT ....");
}

其他解决方案是使用 Singleton Class 访问数据库,这样就有一个函数总是返回对 $mdb2 变量的引用。

当然有讨论Global or Singleton for database connection?值得一读。

关于php - 在 PHP 对象中连接到 MDB2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6285400/

相关文章:

java - 在 SQL DB 中插入空 java.sql.Date 的更优雅的方法

java - 获取网页并保存在数据库中?

mysql - 如果查询有行,如何只运行子查询?

wcf - 使用 WCF 包装现有的连接流

sql - 如何使用 Oracle SQL Developer 连接到数据库

php - 如何生成字符串的 HmacSHA256 签名

php - 从函数返回 html

php - 使用 glob 动态显示不同扩展名的图像在 PHP 中不起作用

asp.net - 如何更改 ASP.NET 配置工具连接字符串

php - mysql: 不能将 max_allowed_pa​​cket 设置为任何大于 16MB 的值