По непонятно мне причине выводит ошибку:
Fatal error: Uncaught Error: Call to a member function fetchAll() on boolean in /home/uhr/hr-tape.ru/index.php:43 Stack trace: #0 {main} thrown in /home/uhr/hr-tape.ru/index.php on line 43
<?
$config = json_decode(file_get_contents('config'));
$local = json_decode(file_get_contents($config->tpl.'/local.json'));
try {
$db = new PDO('mysql:host='.$config->db->host.';dbname='.$config->db->name, $config->db->user, $config->db->pass); //д Данные верные
}
catch(PDOException $e) {
exit(getTPL('errors/db_connect'));
}
function sendQuery($query,$vars) {
global $db;
try {
$prepare = $db->prepare($query); //object(PDOStatement)#6 (1) { ["queryString"]=> string(68) "SELECT `id`, `title`, `desc` FROM `posts` ORDER BY `id` DESC LIMIT 5" }
$execute = $prepare->execute($vars); //(выдает просто true) :c
return $execute;
}
catch(PDOException $e) {
exit(getTPL('errors/db_query'));
}
}
function getTpl($filename) {
global $config;
return file_get_contents($config->tpl.'/'.$filename.'.html');
}
$title = $local->title;
switch ($_GET['e']) {
default:
$title = $title->posts;
$query_count = 'SELECT count(*) FROM `posts`';
$query = 'SELECT `id`, `title`, `desc` FROM `posts` ';
$array = null;
$query .= 'ORDER BY `id` DESC LIMIT ';
if (is_numeric($_GET['offset'])) {
$query .= '?,';
$array = array();
array_push($array, $_GET['offset']);
}
$query .= 5;
$response = sendQuery($query,$array)->fetchAll();
$count = sendQuery($query_count, null)->fetchColumn();
if (!empty($response)) {
foreach ($response as $post) {
$posts.= str_replace(
array('$ID$','$TITLE$','$DESC$'),
array($post['id'],$post['title'],$post['desc']),
getTpl('posts_row'));
}
if (isset($_GET['scroll'])) exit ($posts);
else $content = str_replace(array('$POSTS$','$COUNT$'),array($posts,$count),getTpl('posts'));
}
else if (!isset($_GET['scroll'])) {
$content = getTpl('errors/posts_not_found');
}
break;
case 'post':
if (is_numeric($_GET['id'])) {
$query = 'SELECT `id`, `title`, `desc-full` FROM posts WHERE id = ? LIMIT 1';
$response = sendQuery($query,array($_GET['id']))->fetch(PDO::FETCH_BOTH);
if ($response) {
$title = $response['title'];
$content = str_replace(array('$TITLE$','$DESC-FULL$'),array($response['title'],$response['desc-full']),getTpl('post'));
} else {
$title = $local->error;
$content = getTpl('errors/post_not_found');
}
} else {
$title = $local->error;
$content = getTpl('errors/post_wrong_id');
}
break;
}
if (isset($content)) {
if (isset($_POST['ajax'])) {
exit (serialize(array($title,$content)));
} else {
exit(str_replace(
array('$TITLE$','$CONTENT$','$CDN$'),
array($title, $content, $config->cdn),
getTpl('main')));
}
}
?>
Подскажите пожалуйста в чем проблема и как можно исправить?
Ну как бы логично, у Вас в комментарии написано execute
просто отдаёт true
(и документации тоже), а у него нет метода fetchAll
, что и говорится в ошибке.
Исправить - возвращать PDOStatement
, а не результат execute
.
Что-то вроде:
$prepare = $db->prepare($query);
$execute = $prepare->execute($vars); // Тут стоит проверить результат выполнения запроса, для чего, собственно, идёт возврат булева значения
return $prepare; // Отдавать именно PDOStatement, из него уже можно извлекать, если есть что
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При запросе в Базу данных использую QSqlQueryModel, добавляю эту модель в QTableView все хорошо, отображаетсяМне необходимо эту табличку перевести в PDF
У меня есть два класса, которые раскинуты по разным хэдэрам и сурсным файлам, при этом в каждом из них есть некоторое количество статических...
Я перехватываю перемещение файла, в файле permissiontxt через \n записаны пути до файлов, которые перемещать нельзя Сейчас сильно остановился на больной...
А на x64 тот же самый код нормально работает, выдаёт полный стекВ чём может быть проблема? Может быть кто-нибудь сталкивался с подобной проблемой?