@freeman0204

Почему в одном файле вызов функции с параметром работает, а в другом нет?

Вот функция:
function directory_val($val) {
  $id = $_GET['id'];
$result = mysql_query("SELECT * FROM directory WHERE id = $id");
if ($val == "title") {
    while ($row = mysql_fetch_assoc($result))  {
      echo $row['title'];
      }
}

elseif ($val == "description") {
    while ($row = mysql_fetch_assoc($result))  {
      echo $row['description'];
      }
}

elseif ($val == "id") {
    while ($row = mysql_fetch_assoc($result))  {
      echo $row['id'];
      }
}
}


<?php directory_val('title'); ?>

вызываю ее в одном файле, в значении value работает, вызываю просто в другом файле выдает ошибку. Но файлы находятся в разных папках, может из за этого? Хотя и там и там есть подключение к БД и к файлу functions.php.

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/freeman/domains/spilart.dp.ua/public_html/domolux/admin/functions.php on line 56


функция что выше (function directory_val($val)) как раз находится в файле functions.php.
Может это связано с путями, или с подключением к БД? Очень часто такая ошибка.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
Скорее всего, mysql_query возвращает false.
Попробуйте написать:
$result = mysql_query("SELECT * FROM directory WHERE id = $id") or die("Invalid query: " . mysql_error());

Проверьте, что лежит в переменной $id.

Вообще, нехорошо в функции брать значение переменной из $_GET параметра, лучше сделать $id аргументом функции:
function directory_val($id, $val) {
...
}

А вызывать так:
$id = (int) $_GET['id'];
directory_val($id, 'title');


К тому же - зачем вам цикл по строкам, если у вас id уникальный?
Напишите хотя бы так:
$result = mysql_query("SELECT * FROM directory WHERE id = $id LIMIT 1") or die("Invalid query: " . mysql_error());
$row = mysql_fetch_assoc($result);
if(key_exists($val, $row)) {
     echo $row[$val];
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 22:42
1500 руб./в час
03 мая 2024, в 22:22
10000 руб./за проект
03 мая 2024, в 22:18
1000 руб./за проект