我已经搜索过了,也许我正在搜索错误的东西,但我需要以下代码的帮助。我一定是错过了什么......
数据库类:
class Database {
private static $link = null;
private static function dbLink() {
if(self::$link) {
return self::$link;
}
$dsn = null;
switch(DB_DRVR) {
case 'mysql':
$dsn = DB_DRVR . ":host=" . DB_HOST . ";dbname=" . DB_NAME;
break;
}
self::$link = new PDO($dsn, DB_USER, DB_PASS);
return self::$link;
}
public static function fetchAssoc($sql) {
$stmt = self::query($sql);
$result = array();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;
}
public static function __callStatic($name, $arguments) {
$callback = array(self::dbLink(), $name);
return call_user_func_array($callback, $arguments);
}
}
部分代码返回错误:
$sql = "SELECT group FROM users WHERE username='ryan';";
$dbSQL = Database::fetchAssoc($sql);
echo $dbSQL['group'];
数据库设置:
- id(auto_increment, primary)
- name(tinytext)
- username(tinytext)
- password(tinytext)
- salt(tinytext)
- email(tinytext)
- group(tinytext)
- privileges(tinytext)
我收到以下错误:
Fatal error: Call to a member function fetch() on a non-object
in C:\public_html\kernel\database.php on line 38
但是奇怪的是,如果我将 SQL 更改为:
$sql = "SELECT * FROM users WHERE username='ryan';";
我没有收到错误,它正确显示,如果我将 SQL 语句更改为:
$sql = "SELECT username FROM users WHERE username='ryan';";
并调用 $dbSQL['username'] 使用上面的函数它工作正常。
我的问题:为什么当我尝试使用我的 $dbSQL 数组中的“组”列时,我收到错误,但是当我尝试使用“用户名”列时,一切运行正常。我错过了什么?
谢谢, 瑞安
最佳答案
SELECT `group` FROM users WHERE username='ryan'
关于PHP PDO Fetch_Assoc 未正确返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11064182/