私は検索しました、そして多分私は間違ったものを探しています、しかし私は以下のコードで助けが必要です。私は何かが欠けているに違いない...
データベースクラス:
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)
- 名前(tinytext)
- username(tinytext)
- パスワード(tinytext)
- salt(tinytext)
- メール(tinytext)
- group(tinytext)
- 特権(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配列の「group」列を使用しようとするとエラーが発生しますが、「username」列を使用しようとするとすべて正常に実行されます。私は何が欠けていますか?
ありがとう、ライアン