我马上去追。在这一点上,我能用这个类实现的只是一个数据库连接。我无法查询。你能确切地告诉我如何使这个工作和/或告诉我如何以更好的方式重新编码它吗?

<?php
class database{

public $dbHost = '';
public $dbUser = '';
public $dbPass = '';
public $dbName = '';

public $db;

public function __construct(){}

public function dbConnect(){
    $mysqli = new mysqli($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName);

    /* check connection */
    if (mysqli_connect_errno()){
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }else{
        echo 'connection made';
    }
    /* close connection */
    $mysqli->close();
}

public function query($sql){
    $query = $sql;
    self::preparedStatement($query);
}

public function preparedStatement(){
    if ($stmt = $mysqli->prepare($query)){

        /* execute statement */
        $stmt->execute();

        /* bind result variables */
        $stmt->bind_result($name, $code);

        /* fetch values */
        while ($stmt->fetch()) {
            printf ("%s (%s)\n", $name, $code);
        }

        /* close statement */
        $stmt->close();
    }
}

public function __destruct(){}

}
?>

最佳答案

这对我有效。我已经评论了我的更改。

<?php
class database{

public $dbHost = '';
public $dbUser = '';
public $dbPass = '';
public $dbName = '';

public $db;

public function __construct(){}

public function dbConnect(){
    ### not $mysqli
    $this->db = new mysqli($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName);

    /* check connection */
    if (mysqli_connect_errno()){
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }else{
        echo 'connection made';
    }
    /* close connection */
    ### $this->db->close(); // DO NOT close the connection here!
}

public function query($sql){
    $query = $sql;
    self::preparedStatement($query);
}

public function preparedStatement($query){ ### parameter $query added

    if ($stmt = $this->db->prepare($query)){ ### not $mysqli->prepare()

        /* execute statement */
        $stmt->execute();

        /* bind result variables */
        $stmt->bind_result($name, $code);

        /* fetch values */
        while ($stmt->fetch()) {
            printf ("%s (%s)\n", $name, $code);
        }

        /* close statement */
        $stmt->close();
    }
}

public function __destruct(){}

}


### Test code
/*
$db = new Database();
$db->dbHost = '127.0.0.1';
$db->dbUser = 'root';
$db->dbPass = 'root';
$db->dbName = 'test';
$db->dbConnect();
$db->query('SELECT * FROM test');
*/
?>

关于php - 如何让这个mysqli数据库类工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1304732/

10-16 07:23