php - 在 oop php 中重用 mysql 连接

标签 php mysql oop superglobals

<分区>

解决方案取自评论,所以我不能接受关闭此问题的答案。但我确实在下面发布了对我有用的实际解决方案

我是 OOP 的新手,即使阅读了相当多的示例,我还是想不通如何在不使用 $GLOBALS 的情况下使用相同的 mysql 连接。

如果有人能像我两岁的 child 一样解释它,那将非常有帮助。

这是我的连接文件。

$hostname = 'hostname';
$username = 'db';
$password = 'password';

try {
$dbh = new PDO("mysql:host=$hostname;dbname=db", $username, $password);
}
 catch(PDOException $e)
    {
    echo $e->getMessage();
 }

但是为了在类或函数中使用它,我这样做:

class basic {

function simple($id) {

$query = $GLOBALS['dbh']->query("SELECT * FROM table WHERE id = $id");
$row = $query->fetch(PDO::FETCH_OBJ);
$thing = $row->partoftable;
echo $thing;
 }
}

$first = new basic();
$first->simple(12);

这当然会返回我正在寻找 ID 为 12 的 $thing 的内容。但是如果没有 GLOBALS['dbh'] 连接到数据库,我该怎么做呢?

也可以随意撕开其他任何东西,但请记住,这是我所说的最简单的例子。

提前致谢。

根据下面的评论,这是适合我的解决方案。

class basic {

function __construct($dbh)
    {
        $this->dbh = $dbh;
    }

function simple($id) {

$query = $this->dbh->query("SELECT * FROM table WHERE id = $id");
$row = $query->fetch(PDO::FETCH_OBJ);
$thing = $row->partoftable;
echo $thing;
 }
}

$first = new basic($dbh);
$first->simple(12);

谢谢。希望这可以帮助别人。

最佳答案

class basic {

var $CONNECTION;

function __construct($dbh) {
    $this->CONNECTION = $dbh;
  }

function simple($id) {
$conn = $this->CONNECTION;
$query = $conn->prepare("SELECT * FROM table WHERE id = $id");
$query->execute();
$row = $query->fetch(PDO::FETCH_OBJ);
$thing = $row->partoftable;
echo $thing;
 }
}

//class ends you can use thae class like this

$hostname = 'hostname';
$username = 'db';
$password = 'password';

try {
$dbh = new PDO("mysql:host=$hostname;dbname=db", $username, $password);
}
 catch(PDOException $e)
    {
    echo $e->getMessage();
 }

$first = new basic($dbh);
$first->simple(12);

关于php - 在 oop php 中重用 mysql 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29845772/

相关文章:

PHP和MySQL日历问题

php - 使用 PHP 快速检查输入文本中的电话号码格式?

mysql - sql中比较两组数据

winforms - 您是否将对象字段数据绑定(bind)到表单控件?

php - 将 cURL 发布到 Zapier Webhook

php - 无法连接到 "localhost"端口 25 的邮件服务器

MYSQL 将大写字母更改为标题字母

mysql - 在最佳路径上花费太多时间

c++ - 面向对象编程 c++ dll Code::Blocks

java - 有没有一种可靠的方法在java中使用堆?