如何为我的类/函数获取DB-Connection

时间:2016-11-12 21:12:57

标签: php mysql database class pdo


我试图从某个SQL表中获取一些列,它的工作方式如下:

<?php
include("config.php");

// SELECT DATABASE TO ECHO FROM
$sql = "SELECT * from GuildInformation";

// ECHO FROM THE ^SELECT
$data = $conn->query($sql);

foreach ($data as $row) {
// HERE IS SOME CODE WHICH DOES WORK
}
?>

^这个方法确实很有效,现在我想围绕它创建一个函数:

<?php
include("config.php");

function SelectGuildInfo() {
// SELECT DATABASE TO ECHO FROM
$sql = "SELECT * from GuildInformation";

// ECHO FROM THE ^SELECT
$data = $conn->query($sql);

foreach ($data as $row) {
// HERE IS SOME CODE WHICH DOES WORK
}}
?>

当我调用函数SelectGuildInfo();时,我得到以下错误代码:

Fatal error: Call to a member function query() on a non-object in /users/l4g/www/84732842323772/submit.php on line 12

第12行是:$data = $conn->query($sql);

因此,当我include("config.php");进入我的函数时它再次起作用,但是我希望数据库连接不在我的函数中,因为我对这个脚本有1个以上而且只包含1个。


除此之外,我对这些内容非常新,并且实际上想尝试使用类来进行数据库连接,所以我想出了这个:

    <?php

class dbConn{
    protected static $db;
    private function __construct(){
        try{
            self::$db = new PDO('mysql:host=localhost;dbname=NAME', 'USR', 'PWD');
            self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }
        catch(PDOException $e){
            echo "Connection Error: " .$e->getMessage();
        }
    }
    public static function getConnection(){
        if(!self::$db){
            new dbConn();
        }
        return self::$db;
    }
}

?>

如何在我的脚本中使用我的类,所以我不必为我想要使用的每个功能都包含一些东西?!

非常感谢你帮助我! 现在有了这个代码,它运行得非常完美!:)

include("database.class.php");

$db = dbConn::getConnection();

function SelectGuildInfo($db)

1 个答案:

答案 0 :(得分:1)

您的代码无效,因为$conn中的SelectGuildInfo()和配置中的$conn是两个不同的变量。

为了使其正常工作,您必须将$conn = Database::getInstance()添加到SelectGuildInfo中(假设您的工作示例中的$conn是数据库实例)。

P.S。请不要使用mysql_*函数,而是使用mysqli或PDO。