在 PHP 对象中连接到 MDB2

Posted

技术标签:

【中文标题】在 PHP 对象中连接到 MDB2【英文标题】:Connecting to MDB2 in PHP object 【发布时间】:2011-06-08 21:16:54 【问题描述】:
$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 作为参数传递给函数吗?这是正确的做法吗?

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

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

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

【问题讨论】:

【参考方案1】:

您可以在所有页面上要求您的文件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? 的讨论值得一读。

【讨论】:

太棒了。我让它工作。备查。这是我如何让它在课堂上工作。在 __construct...put 全局 $mdb2 中,假设您已将 $mdb2 设置为全局变量 感谢您提供非常详细的解决方案

以上是关于在 PHP 对象中连接到 MDB2的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 PHP5 中连接到 mysql5

如何在 PHP7 中连接到 MS Access 数据库?

在 C# 中连接到 SQL Server 时出现问题

如何在 PL/SQL 中连接到另一个用户

在 express.js 中连接到 Mongodb-Native-Driver

如何在 Codeigniter 3 中连接到 POSTGRESQL?