【问题标题】:"no database selected" in mysqli (php)mysqli(php)中的“未选择数据库”
【发布时间】:2014-05-28 04:55:43
【问题描述】:

我在 php 中使用 mysqli 得到“未选择数据库”,我有这个方法:

private static $db_server = "localhost";
private static $db_usuario = "root";
private static $db_clave = "";
private static $db_base = "test";
private static $db = null;
public static function conectar_db() {
    if (self::$db == null) {
        self::$db = new mysqli(self::$db_server,self::$db_usuario,self::$db_clave,self::$db_base);
        self::$db->connect();
    }
    return self::$db;
}

这个代码在另一个文件中执行一个查询:

    $db = Core::conectar_db();
    $r = $db->query("SELECT * FROM usuarios");
    echo $db->error;//temporal
    while ($row = $r->fetch_array()) {
        var_dump($row);
        echo "<br>";
    }

当执行代码时,完整的输出是:

    No database selected
Fatal error: Call to a member function fetch_array() on a non-object in Path\to\my\file.php on line 6

但如果我将查询更改为test.usuarios 而不是usuarios 它可以工作(我使用var_dump 只是为了测试),我试过了:

  • 使用public static $db 并直接访问Core::$db(Core 是一个处理这些核心功能的类)
  • 在方法的签名中使用&amp;conectar_db
  • 将无效的数据库名称添加到$db_base,我得到一个错误,说 db 按预期无效 我必须使用 oop(我认为使用过程式风格会产生与 oop 方法相同的结果),因为这是一个项目

【问题讨论】:

    标签: php database oop mysqli


    【解决方案1】:

    不要打电话给self::$db-&gt;connect()。 mysqli 构造函数连接到服务器。 connect 方法实际上等价于构造函数,因此当您在不带参数的情况下调用 connect() 时,您将使用默认参数重新连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 2013-01-02
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多