У меня проблемы с элементарными вещами. И мне стыдно, что я сам не могу их разрешить. Вообщем вот код класса Db Код (Text): class Db { public $pdo; public function __construct() { $settings = $this->getPDOSettings(); $this->pdo = new \PDO($settings['dsn'], $settings['user'], $settings['pass'], null); } public function execute($query, array $params=null) { if(is_null($params)){ $stmt = $this->pdo->query($query); return $stmt->fetchAll(); } $stmt = $this->pdo->prepare($query); $stmt->execute($params); return $stmt->fetchAll(); } } Когда вызываю метод execute так, то всё работает: $content = App::$db->execute('SELECT * FROM blog_posts WHERE id = :id', ['id' => $params[0]]); А вот когда вызываю так, то возвращается пустой результат: $content['posts'] = App::$db->execute('SELECT * FROM blog_posts ORDER BY id DESC LIMIT 5 OFFSET ffset', ['offset' => $_GET['offset']]); Отображение ошибок включено, ничего не выводиться. Пробовал вызывать print_r(App::$db->pdo->errorInfo()); выводиться код ошибки 00000, что типа всё в порядке. Почему в первом случае всё работает и аргумент передаётся, а во втором случае оффсет не передаётся ? Помогите плз, очень надо решить проблему. --- Добавлено --- В phpmyadmin запрос работает
Это какая-то жесть. Вот так работает: Код (Text): <?php $pdo = new PDO('mysql:host=localhost;dbname=gotlib;charset=utf8', 'root', '', null); $stmt = $pdo->query('SELECT * FROM blog_posts ORDER BY id DESC LIMIT 5 OFFSET 5'); var_dump($stmt->fetchAll()); А вот так уже нет: Код (Text): <?php $pdo = new PDO('mysql:host=localhost;dbname=gotlib;charset=utf8', 'root', '', null); $stmt = $pdo->prepare('SELECT * FROM blog_posts ORDER BY id DESC LIMIT 5 OFFSET :offset'); $stmt->execute(['offset' => 5]); var_dump($stmt->fetchAll());
Вообщем на тостере дали ссылку http://phpfaq.ru/pdo#limit Вопрос решён Так жёстко я уже давно не ипался
Эм, я может опоздал и может я буду не прав, но PHP: $stmt->execute([':offset' => 5]); И, offset необязательный параметр SELECT * FROM tbl LIMIT 0,100;
Как такое может быть ? PHP: public function run(string $sql, array $bind = []){ //... $pdostmt = $this->prepare($this->sql); if($pdostmt->execute($this->bind) !== false) { //... $this->db->run("select * from tbl where somecolumn = :somevalue",[":somevalue"=>1]); Все работает отлично. PHP: $options = array( PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ); PHP 7.1.0RC4