В чем заключается ошибка

115
29 марта 2021, 21:40
class Database
{
    private $host = "192.168.104.171";
    private $user = "root";
    private $database = "base";
    private $password = "123-qwe";
    private $charset = "utf8";
    private $link;
    private $result;
    public function __construct()
    {
        $dsn = "mysql:host=$this->host;dbname=$this->database;charset=$this->charset";
        $options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false];
        return $this->link = new PDO($dsn, $this->user, $this->password, $options);
    }
    public function query($sql) {
      return $this->link->query($sql);
    }
    public function fetch($sql) {
      $this->link->fetch($this->query($sql));
    }
}
$db = new Database;
print_r($db->fetch("SELECT * FROM offices"));

Выдает ошибку:

Fatal error: Uncaught Error: Call to undefined method PDO::fetch() in C:\Winginx\home\localhost\public_html\lib\db.class.php:24 Stack trace: #0 C:\Winginx\home\localhost\public_html\lib\db.class.php(29): Database->fetch('SELECT * FROM o...') #1 {main} thrown in C:\Winginx\home\localhost\public_html\lib\db.class.php on line 24.

Что я делаю не так?

Answer 1

Как уже сказали в комментариях, у PDO нет метода fetch

class Database
{
    private $host = "192.168.104.171";
    private $user = "root";
    private $database = "base";
    private $password = "123-qwe";
    private $charset = "utf8";
    private $link;
    private $result;
    public function __construct()
    {
        $dsn = "mysql:host=$this->host;dbname=$this->database;charset=$this->charset";
        $options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false];
        return $this->link = new PDO($dsn, $this->user, $this->password, $options);
    }
    public function query($sql) {
      return $this->link->query($sql);
    }
    public function fetch($sql) {
      $request = $this->query($sql);
      return $request->fetch();
    }
}
$db = new Database;
print_r($db->fetch("SELECT * FROM offices"));
READ ALSO
Код php для добавления значений таблице в mysql

Код php для добавления значений таблице в mysql

Код php для добавления значений таблице в mysqlНе работает добавление новых значений, запрос идет, а в результате ничего не добавляется

83
Смена и добавление стилей

Смена и добавление стилей

У меня есть событие, которое по клику меняет стили для блоковНо когда добавил php , то при переходах по ссылкам страница перезагружается и все...

100
Разделить string на HTML элементы

Разделить string на HTML элементы

Хотел разделить string на html элементы span

101