【发布时间】: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 是一个处理这些核心功能的类) - 在方法的签名中使用
&conectar_db - 将无效的数据库名称添加到
$db_base,我得到一个错误,说 db 按预期无效 我必须使用 oop(我认为使用过程式风格会产生与 oop 方法相同的结果),因为这是一个项目
【问题讨论】: