php - 数据库错误 : cannot use database mydatabase MySQL Error: 0 ()Session halted

标签 php mysql mysqli mariadb

<分区>

我刚刚从论坛下载了一些代码,但是这些代码在 mysql 中运行不正常。它报告以下错误:

Database error: cannot use database mydatabase MySQL Error: 0 ()Session halted.

我已经尝试在错误日志中在google中查找并​​修复

下面是代码:

<?php

class Database
{
    var $Host     = "127.0.0.1";        // Hostname of our MySQL server.
    var $Database = "mydatabase";               // Logical database name on that server.
    var $User     = "root";                 // User and Password for login.
    var $Password = "mypassword";

    var $Link_ID  = 0;                  // Result of mysqli_connect().
    var $Query_ID = 0;                  // Result of most recent mysqli_query().
    var $Record   = array();            // current mysqli_fetch_array()-result.
    var $Row;                           // current row number.
    var $LoginError = "";

    var $Errno    = 0;                  // error state of query...
    var $Error    = "";

    //-------------------------------------------
    //    Connects to the database
    //-------------------------------------------
    function connect()
    {
        if( 0 == $this->Link_ID )
            $this->Link_ID=mysqli_connect( $this->Host, $this->User, $this->Password );
        if( !$this->Link_ID )
            $this->halt( "Link-ID == false, connect failed" );
        if( !mysqli_query( sprintf( "use %s", $this->Database ), $this->Link_ID ) )
            $this->halt( "cannot use database ".$this->Database );
    }

    //-------------------------------------------
    //    Queries the database
    //-------------------------------------------
    function query( $Query_String )
    {
        $this->connect();
        $this->Query_ID = mysqli_query( $Query_String,$this->Link_ID );
        $this->Row = 0;
        $this->Errno = mysqli_errno();
        $this->Error = mysqli_error();
        if( !$this->Query_ID )
            $this->halt( "Invalid SQL: ".$Query_String );
        return $this->Query_ID;
    }

    //-------------------------------------------
    //    If error, halts the program
    //-------------------------------------------
    function halt( $msg )
    {
        printf( "<strong>Database error:</strong> %s", $msg );
        printf( "<strong>MySQL Error</strong>: %s (%s)", $this->Errno, $this->Error );
        die( "Session halted." );
    }

    //-------------------------------------------
    //    Retrieves the next record in a recordset
    //-------------------------------------------
    function nextRecord()
    {
        @ $this->Record = mysqli_fetch_array( $this->Query_ID );
        $this->Row += 1;
        $this->Errno = mysqli_errno();
        $this->Error = mysqli_error();
        $stat = is_array( $this->Record );
        if( !$stat )
        {
            @ mysqli_free_result( $this->Query_ID );
            $this->Query_ID = 0;
        }
        return $stat;
    }

    //-------------------------------------------
    //    Retrieves a single record
    //-------------------------------------------
    function singleRecord()
    {
        $this->Record = mysqli_fetch_array( $this->Query_ID );
        $stat = is_array( $this->Record );
        return $stat;
    }

    //-------------------------------------------
    //    Returns the number of rows  in a recordset
    //-------------------------------------------
    function numRows()
    {
        return mysqli_num_rows( $this->Query_ID );
    }

    //-------------------------------------------
    //    Returns the Last Insert Id
    //-------------------------------------------
    function lastId()
    {
        return mysqli_insert_id();
    }

    //-------------------------------------------
    //    Returns Escaped string
    //-------------------------------------------
    function mysqli_escape_mimic($inp)
    {
        if(is_array($inp))
            return array_map(__METHOD__, $inp);
        if(!empty($inp) && is_string($inp))
        {
            return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $inp);
        }
        return $inp;
    }
    //-------------------------------------------
    //    Returns the number of rows  in a recordset
    //-------------------------------------------
    function affectedRows()
    {
        return mysqli_affected_rows();
    }

    //-------------------------------------------
    //    Returns the number of fields in a recordset
    //-------------------------------------------
    function numFields()
    {
        return mysqli_num_fields($this->Query_ID);
    }

}

?>

我已经尝试过 Stack Overflow 上建议的其他方法。

最佳答案

来自 PHP Manual

程序风格

mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ]) : 混合

参数

link:mysqli_connect() 返回的链接标识符 查询

查询:查询字符串。

您的代码无法运行,因为您将 sql 语句作为第一个参数传递,然后是连接句柄。请注意,您还可以在 mysqli_connect 中将数据库指定为第四个参数。这会更快,因为默认数据库是在客户端服务器握手期间设置的。

关于php - 数据库错误 : cannot use database mydatabase MySQL Error: 0 ()Session halted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58798385/

相关文章:

php - 如果没有数据库条目

PHP json_encode 带双引号的数据

php artisan migrate 抛出 [PDO 异常] 找不到驱动程序 - 使用 Laravel

php - 如何修复此代码(由于 MySql 已弃用)

php - 如何处理购物车表中的更新查询

php - 错误 28 超时! PHP

php - PDO 准备好的语句 - 参数名称中的冒号是做什么用的?

mysql - 将集合插入数据库

mysql - 定义 mysql 表关系

php - php sql 得到错误的数组