Выполнение запроса внутри функции

#php #mysql #function

#php #mysql #функция

Вопрос:

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

В моем controller.php У меня есть:

 <?php $get_listing = function ($id) {
$results = $db->query("SELECT * FROM listings ORDER BY date DESC");
$listings = $results->fetchAll(PDO::FETCH_ASSOC);
} ?>
  

Выше приведена моя функция для извлечения данных из базы данных. Я хочу получить определенную строку на основе переменной $id.

Теперь, в моем ad-details.php У меня есть:

 <?php foreach(get_listing($id) as $info) {
echo $info["price"]; }
  

Я получаю сообщение об ошибке, в котором говорится, что функция get_listing не определена, что странно, потому что controller.php включен в ad-details.php

Есть идеи, ребята? Любая помощь была бы высоко оценена.

Ответ №1:

2 ошибки:

1 — Вы забыли

 global $db;
  

и оператор return в вашей функции.

2 — Если вы используете анонимные функции, вам нужно вызывать их со знаком $. Вероятно

 <?php 
   foreach($get_listing($id) as $info) {
       echo $info["price"]; 
   }
?>
  

работает.

Ответ №2:

Вы присвоили своей функции значение переменной с именем $get_listing , но вызываете ее с помощью get_listing .

Либо объявите свою функцию следующим образом.

 function get_listing($id)
  

Или вызовите его следующим образом.

 $get_listing($id)
  

Ответ №3:

 <?php
function get_listing($id)
  {
    $results  = $db->query("SELECT * FROM listings ORDER BY date DESC");
    $listings = $results->fetchAll(PDO::FETCH_ASSOC);
  }
?>