делал я простенький блог для обучения, и захотелось мне сделать авто довыведение постов через ajax с js частью вроде разобрался а вот с серверной не очень, и так вот код простенького класса для работы с бд (основные функции):
class DataBaseWorker{
protected $connection;
public function __construct()
{
$this->connection = mysqli_connect("localhost", "root", "", "site84");
}
public function __destruct(){
$this -> connection->close();
}
public function getPosts(){
return mysqli_query($this->connection, "SELECT * FROM `posts`");
}
public function getPost($id){
$id = addslashes($id);
return mysqli_query($this->connection, "SELECT * FROM `posts` WHERE `ID` = '$id' ");
}
public function getPopularPosts(){
return mysqli_query($this-> connection, "SELECT * FROM `posts` ORDER BY `popularity` DESC LIMIT 4");
}
public function updatePosts($maxId){
return mysqli_query($this->connection, "SELECT * FROM `posts` ORDER BY date DESC LIMIT '$maxId', 4");
}
}
для ajax'a я использую поледнюю функцию по запросу, я думаю, видно что возвращается 4 поста с id > чем id у самого последнего уже выведенного поста, теперь сам файл обработчик ajax запроса:
<?php
header('Content-Type: application/json');
require_once ('database.php');
$id = $_GET['maxPost'];
$database = new DataBaseWorker();
$rs = $database->updatePosts($id);
$data = [];
while($row = mysqli_fetch_assoc($rs)){
array_push($data, $row);
}
echo json_encode($data);
в других случаях конструкция с whil'ом не подводила, но тут почему то выходит ошибка:
mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given
раньше такого не было, как я понял в rs приходит bool, но судя по оф. документации при select запросах возвращается mysqli_result, а вот bool только для update, insert и т.п. запросах + если попробовать вывести $rs то выводится undefined, что делать?
P.S. я проверял запрос база данных возвращает как минимум 3 строки, то есть возвращаемый результат не должен быть null и т.п.
P.P.S. версия php 5.6
getPopularPostsэто никак не мешает (это кавычки php, весь запрос у нас в двойных кавычках, а нам нужно подставить значение переменной, что делается только в одинарных, поэтому они там и нужны, (без них в запрос бы просто вставилось вместо цифры имя переменной $maxId ) ) , на ошибки я проверял, все нормально – NEStenerus nester Jul 27 '18 at 17:03