1 (изменено: Anton_Live, 2015-02-07 15:06:53)

Тема: Помогите исправить проблему

В чем проблема, помогите исправить ошибку

После вызова функции:

[php]
$data = select_data($view,$lang);
[/php]

сама функция:

[php]
function select_data($table,$lang)
{
    db_connect();
       
    $query = "SELECT * FROM $table WHERE $table.lang = '$lang' ORDER BY $table.id DESC";
       
    $result = mysql_query($query);
       
    $result = db_result_to_array($result);
       
    return $result;
}
[/php]

выдает ошибку:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/a/antonlive/apiarian.ru/public_html/db_functions.php on line 27

2

Re: Помогите исправить проблему

Функция mysql_fetch_array() должна первым параметром содержать результат запроса. Что у вас передается в эту функцию необходимо смотреть в файле db_functions.php.

3

Re: Помогите исправить проблему

Просмотрите пожалуйста, все функции файла db_functions.php не могу понять в чем ошибка:

[php]
///Функция для помещения результатов выборки в массив   
function db_result_to_array($result)
{
    $res_array = array();
   
    $count = 0;
       
    while($row = mysql_fetch_array($result))
    {
        $res_array[$count] = $row;
        $count++;
    }
    return $res_array;
}

///Функция для выборки меню
function get_menu($lang)
{
    db_connect();
   
    $query = sprintf("SELECT * FROM pages WHERE pages.lang = '%s' AND pages.title_url != 'signup' AND pages.title_url != 'forgot'",
             mysql_real_escape_string($lang));
   
    $result = mysql_query($query);
   
    $result = db_result_to_array($result);
   
    return $result;
}

///Функция для получения информации о странице   
function page_data($title,$lang)
{
    db_connect();
       
    $query = sprintf("SELECT * FROM pages WHERE pages.title_url = '%s' AND pages.lang = '%s'",
             mysql_real_escape_string($title),
             mysql_real_escape_string($lang));
       
    $result = mysql_query($query);
       
    $row = mysql_fetch_array($result);
       
    return $row;
}

///Функция для выборки записей, фото, видео для сайта   
function select_data($table,$lang)
{
    db_connect();
       
    $query = "SELECT * FROM $table WHERE $table.lang = '$lang' ORDER BY $table.id DESC";
       
    $result = mysql_query($query);
       
    $result = db_result_to_array($result);
       
    return $result;
}

///Функция для получения информации о видео или записи   
function get_data($table,$title,$lang)
{
    db_connect();
       
    $query = sprintf("SELECT * FROM $table WHERE $table.title_url = '%s' AND $table.lang = '%s'",
             mysql_real_escape_string($title),
             mysql_real_escape_string($lang));
       
    $result = mysql_query($query);
       
    $row = mysql_fetch_array($result);
       
    return $row;
}

///Функция для получения информации о видео, записи, пользователе в админке   
function get_data_admin($table,$id)
{
    db_connect();
       
    $query = sprintf("SELECT * FROM $table WHERE $table.id = '%s'",
             mysql_real_escape_string($id));
       
    $result = mysql_query($query);
       
    $row = mysql_fetch_array($result);
       
    return $row;
}

///Функция для получения списка пользователей в админке
function get_users()
{
    db_connect();
   
    $query = "SELECT * FROM users ORDER BY users.status DESC";
       
    $result = mysql_query($query);
       
    $result = db_result_to_array($result);
       
    return $result;
}

///Функция для получения последних записей в админке на главной
function get_main_articles()
{
    db_connect();
   
    $query = "SELECT * FROM articles ORDER BY articles.id DESC LIMIT 5";
       
    $result = mysql_query($query);
       
    $result = db_result_to_array($result);
       
    return $result;
}

///Функция для обрезки символов в строке   
function str_size($str)
{
    $str = iconv('UTF-8', 'windows-1251', $str);
   
    $str = substr($str, 0, 800);
   
    $str = iconv('windows-1251', 'UTF-8' ,$str);
   
    return $str;
}

///Функция для получения последней записи на главной странице сайта   
function get_last_news($lang)
{
    db_connect();
       
    $query = sprintf("SELECT * FROM articles WHERE articles.lang = '$lang' ORDER BY articles.id DESC LIMIT 1");
       
    $result = mysql_query($query);
       
    $row = mysql_fetch_array($result);
       
    return $row;
}

///Функция для получения комментариев для записи или видео   
function get_comments($title,$section,$lang)
{
    db_connect();
       
    $query = sprintf ("SELECT * FROM comments WHERE comments.note_id = '%s' AND comments.section = '%s' AND comments.lang = '%s' ORDER BY comments.id DESC",
             mysql_real_escape_string ($title),
             mysql_real_escape_string ($section),
             mysql_real_escape_string ($lang));
       
    $result = mysql_query($query);
       
    $result = db_result_to_array($result);
       
    return $result;
}

///Функция для добавления комментариев для записи или видео    в БД
function add_comment($data)
{
    db_connect();
       
    mysql_query("INSERT INTO comments (author,text,note_id,section,date,time,lang) VALUES ($data)");
}

///Функция для получения капчи   
function captcha()
{
    $captcha = rand(10000,99999);
    return $captcha;
}

///Функция для очистки входящих данных   
function clear_data($data)
{
    $data = trim(htmlspecialchars($data));
    return $data;
}

///Функция для изменения языка   
function change_lang($lang)
{
    $_SESSION['lang'] = $lang;
    return $_SESSION['lang'];
}

///Функция для прверки существует ли такая статья или видео
function check_data($table,$title,$lang)
{
    db_connect();
   
    $query = sprintf("SELECT * FROM $table WHERE $table.lang = '%s' AND $table.title_url = '%s'",
                    mysql_real_escape_string($lang),
                    mysql_real_escape_string($title));
                   
    $result = mysql_query($query);
    if(mysql_num_rows($result) > 0) return TRUE;
    else return FALSE;
}

///Функция для восстановления пароля
function forgot($user, $email)
    {
        db_connect();
       
        $query = sprintf("SELECT * FROM users WHERE users.username = '%s' AND users.email = '%s'",
                        mysql_real_escape_string($user),
                        mysql_real_escape_string($email));
       
        $result = mysql_query($query);
        if(mysql_num_rows($result) > 0) return TRUE;
        else return FALSE;
    }

///Функция для изменения пароля в БД   
function change_password($password, $user)
    {
        db_connect();
       
        mysql_query("UPDATE users SET password = '$password' WHERE users.username = '$user'");
    }

///Функция для добавления количества просмотров в БД
function views($table, $title)
{
    db_connect();
       
        $query = sprintf("SELECT views FROM $table WHERE $table.title_url = '%s'",
                        mysql_real_escape_string($title));
       
        $result = mysql_query($query);
       
        $row = mysql_fetch_array($result);
       
        $views = $row['views']+1;
       
        mysql_query("UPDATE $table SET views='$views' WHERE $table.title_url = '$title'");
}
[/php]

4

Re: Помогите исправить проблему

Вероятно не выполняется запрос:
$query = "SELECT * FROM $table WHERE $table.lang = '$lang' ORDER BY $table.id DESC";
Проверьте формирование запроса прервав скрипт строкой:
exit($query);

5

Re: Помогите исправить проблему

Браузер выдает строку запроса
SELECT * FROM index WHERE index.lang = 'ru' ORDER BY index.id DESC

6

Re: Помогите исправить проблему

Anton_Live сказал:

Браузер выдает строку запроса
SELECT * FROM index WHERE index.lang = 'ru' ORDER BY index.id DESC

Проверьте запрос в phpMyAdmin. Если данные вернутся, то надо проверить почему их вы выдает в скрипте.

7

Re: Помогите исправить проблему

Выдает ошибку:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$query = "SELECT * FROM $table WHERE $table.lang = '$lang' ORDER BY $table.id DE' at line 1

8

Re: Помогите исправить проблему

Проверьте сформированный запрос.

SELECT * FROM index WHERE index.lang = 'ru' ORDER BY index.id DESC

9 (изменено: Anton_Live, 2015-02-08 21:18:48)

Re: Помогите исправить проблему

Выдает ошибку:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index WHERE index.lang = 'ru' ORDER BY index.id DESC' at line 1

Что не правильно не понимаю

10

Re: Помогите исправить проблему

index - это зарезервированное имя, его нельзя использовать в названии таблиц без косых кавычек.
Исправьте строку таким образом:

$query = "SELECT * FROM `$table` WHERE `$table`.`lang` = '$lang' ORDER BY `$table`.`id` DESC";

11

Re: Помогите исправить проблему

Скопировал вставил запрос

все та же ошибка:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/a/antonlive/apiarian.ru/public_html/db_functions.php on line 28

12

Re: Помогите исправить проблему

Ошибку выдает на главной странице админки

13

Re: Помогите исправить проблему

Посмотрите сформированный запрос и какую ошибку он выдает.

14

Re: Помогите исправить проблему

SELECT * FROM `index` WHERE `index`.lang = `ru` ORDER BY `index`.`id` DESC

15

Re: Помогите исправить проблему

Выполните запрос в phpMyAdmin и посмотрите ошибку. В вашем примере есть ошибка.

16

Re: Помогите исправить проблему

Сегодня выдает другую ошибку в админке

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a/antonlive/apiarian.ru/public_html/db_functions.php on line 28

17

Re: Помогите исправить проблему

В phpMyAdmin выполнил запрос выдает ошибку #1146 - Table 'antonlive_api.index' doesn't exist

18

Re: Помогите исправить проблему

В таблице antonlive_api нет поля index. Смотрите почему такой таблицы или поля нет.

19

Re: Помогите исправить проблему

antonlive_api это база данных, но не таблица, такая ошибка выдается только на главной админки на сайте функция select_data работает нормально