это мой текущий класс базы данных:Создание класса базы данных PHP PDO, проблемы с ООП
class Database {
private $db;
function Connect() {
$db_host = "localhost";
$db_name = "database1";
$db_user = "root";
$db_pass = "root";
try {
$this->db = new PDO("mysql:host=" . $db_host . ";dbname=" . $db_name, $db_user, $db_pass);
} catch(PDOException $e) {
die($e);
}
}
public function getColumn($tableName, $unknownColumnName, $columnOneName, $columnOneValue, $columnTwoName = "1", $columnTwoValue = "1") {
$stmt = $this->db->query("SELECT $tableName FROM $unknownColumnName WHERE $columnOneName='$columnOneValue' AND $columnTwoName='$columnTwoValue'");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $results[0][$unknownColumnName];
}
}
Я пытаюсь запустить его, используя следующий код:
$db = new Database();
$db->Connect();
echo $db->getColumn("Sessions", "token", "uid", 1);
И я получаю следующая ошибка:
PHP Fatal error: Call to a member function fetchAll() on a non-object in /Users/RETRACTED/RETRACTED/root/includes/Database.php on line 19
Любая идея, что случилось? Спасибо
На стороне записки, я бы использовать подготовленные заявления PDO путем привязки а не включать их напрямую. Например, '-> prepare ('SELECT? FROM? WHERE ...') -> выполнить (func_get_args());'. –
Спасибо Остин, я обязательно буду использовать подготовленные заявления в будущем. – User2013
@AustinBrunkhorst Вы не можете использовать привязку параметров для идентификаторов БД (имена таблиц и столбцов), только значения – Phil