PDO全球实例新PDO,其可能性? [英] PDO Global Instance New PDO , its possible?

查看:112
本文介绍了PDO全球实例新PDO,其可能性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用PHP PDO连接到我的数据库并运行一些查询,然后在某些表单上使用查询返回。

也就是说,我有一个select它是由来自查询的值填充的。



我创建了两个函数来连接数据库和数据,但我想知道是否可以创建一个全局变量,因为我正在使用新PDO。

  / ** Conecta com作为impressas ** / 
函数impressoras()
{
$ PDO2 = new PDO('mysql:host = localhost; dbname = ti','root','xxx');
$ PDO2-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);
global $ stmt;
$ stmt = $ PDO2-> prepare(SELECT * FROM league);
$ stmt-> execute();
$ result = $ stmt-> fetchAll();
返回$ result;
echo json_encode($ user_arr);
}
函数carrefour()
{
$ PDO3 = new
PDO('mysql:host = localhost; dbname = ti','root','xxx );
$ PDO3-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);
global $ stmt;
$ stmt = $ PDO3-> prepare(SELECT * FROM lol);
$ stmt-> execute();
$ result = $ stmt-> fetchAll();
返回$ result;
echo json_encode($ user_arr);
}


解决方案

您可以分享相同的数据库连接对象(PDO)在普通的旧过程风格中非常简单:-)下面是一个简单的例子:

  // config .php 
define('DB_DSN','mysql:host = 127.0.0.1; dbname = test; charset = utf8');
define('DB_USERNAME','root');
define('DB_PASSWORD','');

// database.php
函数db()
{
static $ db = null;
if($ db === null){
$ db = new PDO(DB_DSN,DB_USERNAME,DB_PASSWORD,array(
PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION,
PDO :: ATTR_PERSISTENT => false,
PDO :: ATTR_DEFAULT_FETCH_MODE => PDO :: FETCH_ASSOC,
PDO :: MYSQL_ATTR_INIT_COMMAND =>SET NAMES utf8 COLLATE utf8_unicode_ci
) );
}
返回$ db;

用法

  function test1()
{
$ pdo = db();
$ stmt = $ pdo-> prepare(SELECT * FROM league);
$ stmt-> execute();
$ result = $ stmt-> fetchAll();
返回$ result;





$ b

如果你更喜欢更专业的解决方案,那么看看 PHP-DI 并使用依赖注入。

I am using PHP PDO to connect to my database and run some querys to then use the query return on some forms.

That is, I have a select where it is populated by the values ​​coming from the query.

I created two functions to connect to the database and data, but I wanted to know if I can create a global variable because I am using the "New PDO" .

/** Conecta com as impressas **/
function impressoras()
{       
    $PDO2 = new PDO('mysql:host=localhost;dbname=ti','root','xxx');
    $PDO2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    global $stmt;
    $stmt = $PDO2->prepare("SELECT * FROM league");
    $stmt->execute();
    $result = $stmt->fetchAll();
    return $result; 
    echo json_encode($user_arr);    
}
function carrefour()
{
    $PDO3 = new 
    PDO('mysql:host=localhost;dbname=ti','root','xxx');
    $PDO3->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    global $stmt;
    $stmt = $PDO3->prepare("SELECT * FROM lol");
    $stmt->execute();
    $result = $stmt->fetchAll();
    return $result;     
    echo json_encode($user_arr);    
}

解决方案

You could "share" the same database connection object (PDO) very simple in plain old procedural style :-) Here is a simple example:

// config.php
define('DB_DSN', 'mysql:host=127.0.0.1;dbname=test;charset=utf8');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');

// database.php
function db()
{
    static $db = null;
    if ($db === null) {
        $db = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD, array(
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_PERSISTENT => false,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8 COLLATE utf8_unicode_ci"
        ));
    }
    return $db;
}

Usage

function test1()
{       
    $pdo = db();
    $stmt = $pdo->prepare("SELECT * FROM league");
    $stmt->execute();
    $result = $stmt->fetchAll();
    return $result;     
}

If you prefer a more professional solution then take a look an PHP-DI and use dependency injection.

这篇关于PDO全球实例新PDO,其可能性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆