1

こんにちは、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で行ったのと同じように、単純な方法になりたいと思っていました。 ...

前もって感謝します; フェルナンド・アンドラーデ。

4

2 に答える 2

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.
}
于 2012-12-20T15:02:06.513 に答える
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->query(YOUR QUERY); です。

于 2012-12-20T15:03:49.900 に答える