调用一个方法用mysqli连接到数据库

时间:2012-12-20 14:56:19

标签: php mysql mysqli

您好我想在我的PHP脚本中从MySQL迁移到MySQLi,我有这个系统类,其功能连接到我需要的时候调用的数据库,使用这样一个简单的方法:

Sys::database_connect();

该函数的实际代码是:

function database_connect(){
    require 'conf.php';//configuration file with database variables (sql_)
    mysql_connect($sql_serv, $sql_user, $sql_pw) OR die('ERRO!!! não ligou a base de dados');
    mysql_select_db($sql_bd);
}

调用函数后,我可以毫无问题地查询数据库。

但如果我把它放在sys类中,我就不能对mysqli做同样的事了:

function database_connect(){
    require 'conf.php';

    $mysqli = new mysqli($sql_serv, $sql_user, $sql_pw, $sql_bd);
        if (mysqli_connect_errno()) {
        printf("Ligação à Base de dados falhou: %s\n", mysqli_connect_error());
        exit();
    }
}

我打电话的时候     SYS :: database_connect();

它连接到数据库,但我不能查询已经习惯了我想要的一个简单的方法,因为我已经完成了普通的MySQL,如果有人可以解释我做错了什么或为什么我不能做就像那样......

提前谢谢你; 费尔南多安德拉德。

2 个答案:

答案 0 :(得分:3)

您以后的查询必须使用mysqli连接标识符,您在连接到数据库时创建。因此,请将其保存到系统类的属性中,稍后再使用它。

function database_connect(){
    require 'conf.php';

    $mysqli = new mysqli($sql_serv, $sql_user, $sql_pw, $sql_bd);
    if (mysqli_connect_errno()) {
        printf("Ligação à Base de dados falhou: %s\n", mysqli_connect_error());
        exit();
    }

    Sys::$dbConn = $mysqli;
}

然后在

function query( $sql ) {
    Sys::$dbConn->query( $sql );
    // error handling etc.
}

答案 1 :(得分:1)

我为mysqli数据库类编写了一个扩展

class database extends mysqli {
    function __construct() {
        parent::__construct('host', 'user', 'password', 'database');
        if(mysqli_connect_error()) {
            die('Connect error ('.mysqli_connect_errno().')'.mysqli_connect_error());
        }
        parent::query("SET NAMES 'utf8'");
}

function query($query) {
        $result = parent::query($query);
        if(!$result) {
            echo "<strong>MySQL error</strong>: ".$this->error."<br />QUERY: ".$query;
            die();
        }
        if(!is_object($result)) {
            $result = new mysqli_result($this);
        }
        return $result;
    }
}

所以连接数据库是$ db = new database() 执行查询是$ db-&gt; query(YOUR QUERY);