gordon_shamway
@gordon_shamway

Почему выпадает ошибка при запросе к бд?

Создаю запрос к базе данных и получаю ошибку
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in E:\php\bluePhp\mysite\post\detail.php on line 9

что тут не так
<?php
include_once '../config/db.php';
$postId = $_GET['id'];
$query = "SELECT id, title,body, UNIX_TIMESTAMP(created) AS created, FROM posts WHERE id = $postId";
$result = mysqli_query($con, $query);

if (mysqli_num_rows($result)==0){
    $noArticle = true;
    $navIndex = -1;
    $pageTitle = "Oops";
    echo "error";
} else {
    $noArticle = false;
    $row = mysqli_fetch_array($result);
    $title = $row["title"];
    $date = date("d M, Y H:i:s", $row["created"]);
    $content = $row["body"];
    echo "<script>console.log('ok')</script>";
    }
 ?>
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given

Значит в $result записан не результат запроса, а логическое значение. Читаем описание функции mysqli_query:
Возвращает FALSE в случае неудачи. В случае успешного выполнения запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query() вернет объект mysqli_result. Для остальных успешных запросов mysqli_query() вернет TRUE.

Запрос SELECT, значит из логических значений могло вернуться только FALSE, следовательно в запросе ошибка.
Внимательно читаем запрос - вот она, лишняя запятая.

И, до кучи, ваш код не защищён от SQL-инъекций. Вместо прямой подстановки переменных в запрос используйте плейсхолдеры.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
kirill_782
@kirill_782
Днем я Маринетт
Внимание: mysqli_num_rows() ожидала параметр 1 с типом mysqli_result, boolean пришло в E:\php\bluePhp\mysite\post\detail.php на 9 строке.

А вообще ройте у вас скорее всего что-то с подключением к бд
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы