PHP Ошибка Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean on line 26

программирование php MySQL базы данных

Пару недель как изучаю php
Пишу небольшой сайт с админкой,
написал данный код, пол дня уже мучаюсь не могу понять в чем дело.

function showContent(){

$pageAddr = $_GET['fullpage'];
global $link;

$sql = "SELECT id, href, title, short_post, content FROM `posts` ORDER BY id DESC";

$sqlpage = "SELECT id, href, title, short_post, content FROM posts WERE id=$pageAddr";

$page = mysqli_query($link, $sqlpage);
$pages = mysqli_query($link, $sql);//получение всех новостей


//$page = mysqli_fetch_array($page, MYSQLI_ASSOC);

if(!isset($pageAddr)){

while($shortPage = mysqli_fetch_assoc($pages)){

include "templates\site\default\short-page.php";
}

}elseif(isset($pageAddr)){


$Page = mysqli_fetch_assoc($page);
include "templates\site\default\page.php";


}else{
include "templates\site\default\404.php";
}

}

Примечание:
ошибку выдает данная строка
$Page = mysqli_fetch_assoc($page);
Ответы:
Есть такая полезная штука, называется документация. В частности, там говорится следующее про функцию mysqli_query:
"Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE."
Вот и думайте.
К вам прилетает pageAdd, вы её без задней мысли, не фильтруя и не приводя к типу поля, да даже не проверяя на её пустоту пихаете в sql выражение.
function showContent() {
   global $link; // $link точно идентификатор соединения?
   if (!isset($_GET['fullpage'])) {
       include_once realpath( __DIR__ . "/templates/site/default/404.php");
   } else {
       // если get есть, если она не пуста и не массив (html5), то приводим к числу
       $id = (!empty($_GET['fullpage']) and !is_array($_GET['fullpage']))
           ? intval($_GET['fullpage']) : 0;
       $sql = ($id < 1)
           ? "SELECT id, href, title, short_post, content FROM posts ORDER BY id DESC"
           : "SELECT id, href, title, short_post, content FROM posts WERE id='".$id."'";
       if (!$data = mysqli_query($link, $sql))
           exit("Ищи ошибку в sql");
       while ($row = mysqli_fetch_assoc($pages)) {
           $data[] = $row;
       }
       // $data двумерный массив с данными из базы
       if ($pageAddr < 1) {
           include_once realpath( __DIR__ . "./templates/site/default/short-page.php");
       } else {
           include_once realpath( __DIR__ . "/templates/site/default/page.php");
       }
       
   }
}


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.