无法获取数据库

丹尼斯·马库拉(Denis Makula)|

这个错误让我很恼火。我一直mysqli::query(): Couldn't fetch database在进行mysqli查询。

这是我的mysqli扩展类(database.php):

class database extends mysqli {

    private $host;
    private $username;
    private $password;
    private $database;
    private $name;
    private $connected;
    public $status;

    public function __construct( $param ) {

        $this->host = $param['host'];
        $this->username = $param['username'];
        $this->password = $param['password'];
        $this->database = $param['name'];   

        @parent::__construct( $this->host, $this->username, $this->password, $this->database );

        $this->status = ($this->connect_errno) ? "Not Connected ( Because of Error )" : "Connected";
        $this->connected = ($this->connect_errno) ? false : true;
    }

    public function stop() {
        if( $this->connected ) { $this->close(); }
        $this->status = "Not Connected ( Manually Disconnected )";
    }

}

这是我使用查询(sessions.php)的地方:

class session {

    private $db;

    public function __construct( $db ) {
        $this->db = $db;
    }

    function open() {
        return true;
    }

    function close() {
        return true;
    }

    function read( $id ) {


        $sql = "SELECT * FROM sessions WHERE sessionid = '{$id}'";
        $sqlq = $this->db->query( $sql );
        if( $sqlq ) { $row = $sqlq->fetch_assoc(); return $row['data']; }
        else { return ''; }

    }

    function write( $id, $data ) {

        $now = time();

        $sql = "SELECT * FROM sessions WHERE sessionid = '{$id}'";

        $sqlq = $this->db->query( $sql ); // HERE I GET THE ERROR

        if( ( $sqlq ) && ( $sqlq->num_rows == 1 ) ) { $sql = "UPDATE sessions SET data = '{$data}', updated = {$now} WHERE sessionid = '{$id}'"; return $this->db->query( $sql ); }
        else { $sql = "INSERT INTO sessions ( sessionid, updated, data ) VALUES ( '{$id}', {$now}, '{$data}' )"; return $this->db->query( $sql ); }

    }

    function destroy( $id ) {

        return $this->db->delete( "FROM sessions WHERE sessionid = '{$id}'" );

    }

    function clean( $max ) {

        $old = time() - $max;

        return $this->db->delete( "FROM sessions WHERE updated < {$old}" );

    }

}

这就是我在主文件(main.php)中使用它们的方式:

<?
    $params = array();
    $params['host'] = XXXXXXXXXXXXX;
    $params['username'] = XXXXXXXXXXXXX;
    $params['password'] = XXXXXXXXXXXXX;
    $params['name'] = XXXXXXXXXXXXX;

    include("database.php");
    include("sessions.php");

    $db = new database( $params );
    $session = new session( $db );
    session_set_save_handler( array($session, "open"), array($session, "close"), array($session, "read"), array($session, "write"), array($session, "destroy"), array($session, "clean") );
    session_start();

?>
埃桑

read function应工作正常,但write function不会与相同的连接工作。

最好的方法是在特定于类本身的会话对象内创建连接。

将会是这样的:

class session {

  private $db;

  public function __construct( $params ) {
    $this->db = new database( $params );
  }
  .
  .
  .
}

然后像这样创建您的会话对象:

$session = new session( $params );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法从数据库中获取数据

来自分类Dev

CodeIgniter:无法从数据库获取数据

来自分类Dev

无法从MySQLdb数据库获取数据

来自分类Dev

无法从Wordpress数据库获取parmalink

来自分类Dev

QSqlQueryModel无法从数据库获取时间

来自分类Dev

无法从数据库获取结果

来自分类Dev

无法从数据库获取对象

来自分类Dev

QSqlQueryModel无法从数据库获取时间

来自分类Dev

无法从数据库获取员工列表

来自分类Dev

从数据库获取无法正常工作?

来自分类Dev

无法从数据库获取值

来自分类Dev

无法从MySQL数据库获取行

来自分类Dev

无法获取数据库路径

来自分类Dev

无法从数据库中获取图像

来自分类Dev

无法从数据库 XAMPP 获取结果

来自分类Dev

无法从Firestore数据库中获取数据

来自分类Dev

为什么我无法从mongodb数据库获取数据?

来自分类Dev

从数据库获取数据无法正常工作

来自分类Dev

Nodejs,Mongoose和Jade无法从数据库获取数据

来自分类Dev

MVC的新手无法从数据库获取数据

来自分类Dev

sqlalchemy:无法从数据库获取任何数据

来自分类Dev

我无法从 Firebase 数据库中获取数据

来自分类Dev

连接正确时无法从数据库中获取数据

来自分类Dev

无法从 Firebase 实时数据库获取数据

来自分类Dev

无法使用python从sqlite数据库获取数据

来自分类Dev

无法从PHP中的数据库获取值

来自分类Dev

无法获取数据库默认值,返回NoSuchObjectException

来自分类Dev

PHP无法从数据库获取用户信息

来自分类Dev

无法从存储在数据库中的json获取值