Задать вопрос
@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.
Может это связано с путями, или с подключением к БД? Очень часто такая ошибка.
  • Вопрос задан
  • 175 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 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];
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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