@m1rvi

Почему не получается вывести данные из БД?

Есть вот такой код, где мне нужно вывести посты юзера.

<?php

$log = $name['login']; # Логин из сессии

  $resul = mysqli_query($connection, "SELECT * FROM `users` WHERE `login` = ".$log." " ); 
  # ^ Мне нужно достать id юзера
  
  $row = mysqli_fetch_assoc($resul);

function getPost(){
  global $connection;

$num =  $row['id'];

$sql = "SELECT * FROM `posts` WHERE `user_id` = ".$num."  ORDER BY `id` DESC "; 
# ^ хочу достать все посты, с id пользователя

  $result = mysqli_query($connection, $sql);

   $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
  
   return $posts;
} ?>

<?php 
$posts = getPost();
?>


Но не знаю почему вылезают такие ошибки:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in W:\domains\contactus\index.php on line 119

Warning: mysqli_fetch_all() expects parameter 1 to be mysqli_result, boolean given in W:\domains\contactus\index.php on line 131

Warning: Invalid argument supplied for foreach() in W:\domains\contactus\index.php on line 144


Знаю, что вопрос глупый, не пишите это в ответах)
  • Вопрос задан
  • 75 просмотров
Решения вопроса 2
gromdron
@gromdron
Работаю с Bitrix24
false возвращается в случае если запрос по какой-то причине не удалось выполнить.
Посмотреть конкретную причину можно через функцию mysqli_error

В своем коде, вам так же всегда требуется проверять возвращаемый результат и логировать подобные ошибки.
Ответ написан
Spartak-2205
@Spartak-2205
Разработка и создание сайтов
<?php

$log = $name['login']; # Логин из сессии

  $resul = mysqli_query($connection, "SELECT * FROM `users` WHERE `login` = '{$log}'" ); 
  # ^ Мне нужно достать id юзера
  
  $row = mysqli_fetch_assoc($resul);

function getPost(){
  global $connection, $row;

$num =  isset($row['id']) ? $row['id'] : false;

$sql = "SELECT * FROM `posts` WHERE `user_id` = '{$num}' ORDER BY `id` DESC "; 
# ^ хочу достать все посты, с id пользователя

  $result = mysqli_query($connection, $sql);

   $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
  
   return $posts;
}

$posts = getPost();

var_dump($posts);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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