[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка в запросе
Fess
Вобщем после смены хостинга, стала вылезать такая шляпа:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/******/public_html/include/database.php on line 53

привожу кусок из database.php:

function fetch_array($q, $result_type=MYSQL_ASSOC) {
return mysql_fetch_array($q, $result_type);
}


Запрос на странице вот так выглядит:

function News() {
global $db, $page;
$num=1;

$start=($page-1)*NUM_NEWS_ON_PAGES;
$res=$db->query([b]"SELECT * FROM news ORDER BY date DESC LIMIT $start,".NUM_NEWS_ON_PAGES[/b]);
while ($row=$db->fetch_array($res)) {
$news_arr[$num][date]=date("d.m.Y",$row['date']);
$news_arr[$num][title]=$row['title'];
$news_arr[$num][descr_shot]=$row['descr_shot'];
$news_arr[$num][url_news]="/about/news/".$row['id']."/";
if ($row['photo_small']!='') {
$news_arr[$num][img]="/".NEWS_IMG_FOLDER.$row['id']."/".$row['photo_small'];
$url="/".NEWS_IMG_FOLDER.$row['id']."/".$row['photo_big'];
$news_arr[$num][img_big]=$url;
}
$num++;
}
return $news_arr;
}

сие вывод новостей. Подскажите в чем может быть проблема


Вот так например уже работает:

function News() {
global $db;
$res=$db->query("SELECT * FROM news ORDER BY date LIMIT 0,2");
while ($row=$db->fetch_array($res)) {
$news_arr[$num][date]=date("d.m.Y",$row['date']);
$news_arr[$num][title]=$row['title'];
$news_arr[$num][descr_shot]=$row['descr_shot'];
$news_arr[$num][url_news]="/news/".$row['id']."/";
$num++;
}
return $news_arr;
}



 ! 

М
Пока вы новичок на этом форуме, потому говорю обрамляйте свой код тегами [php][/php]
И давайте своим темам нормальные название.
В следующий раз если такие правила не будет соблюдены, тему закрою !
PHPprogramer




Спустя 19 минут, 21 секунда (13.07.2011 - 14:37) linker написал(а):
Раз
$res=$db->query("SELECT * FROM `news` ORDER BY `date` DESC LIMIT $start,".NUM_NEWS_ON_PAGES);
Два
$res=$db->query("SELECT * FROM `news` ORDER BY `date` LIMIT 0,2");

Спустя 2 минуты, 28 секунд (13.07.2011 - 14:40) inpost написал(а):
Нажми отредактировать пост, весь код оформи тегами [ php]ТУТ КОД[/php], вверху рядом с другими тегами есть над формой. Оформи, ато так совсем неудобно.
Вот пример:

while ($row=$db->fetch_array($res)) {
$news_arr[$num][date]=date("d.m.Y",$row['date']);
$news_arr[$num][title]=$row['title'];
$news_arr[$num][descr_shot]=$row['descr_shot'];
$news_arr[$num][url_news]="/news/".$row['id']."/";
$num++;

Спустя 11 минут, 57 секунд (13.07.2011 - 14:52) Fess написал(а):
linker, да два. Можно и все разом вывести, но вот как работало до этого по страницам (на прежнем хостинге) уже не работает, вопрос: в чем проблема?




Спустя 1 минута, 25 секунд Fess написал(а):
inpost, спасибо....извиняюсь, что не посмотрел как сделано в других постах

Спустя 4 минуты, 30 секунд (13.07.2011 - 14:56) Winston написал(а):
Цитата (Fess @ 13.07.2011 - 14:18)
$news_arr[$num][title]

Что это такое? Все символьные ключи должны быть в апострофах
$news_arr[$num]['title']

Спустя 8 минут, 29 секунд (13.07.2011 - 15:05) Fess написал(а):
PHPprogramer, по всей видимости проблема не в этом

Спустя 3 минуты, 31 секунда (13.07.2011 - 15:08) Winston написал(а):
Цитата (Fess @ 13.07.2011 - 15:05)
по всей видимости проблема не в этом

Но это к сведению.
---------------

Спустя 47 секунд PHPprogramer написал(а):
Напиши вверху страницы
error_reporting(E_ALL);




Спустя 5 минут, 54 секунды PHPprogramer написал(а):
Попробуй просто вывести на экран
SELECT * FROM news ORDER BY date DESC LIMIT $start,".NUM_NEWS_ON_PAGES

И посмотри правильно ли формируется запрос.

Спустя 11 минут, 33 секунды (13.07.2011 - 15:20) linker написал(а):
Fess
Я же написал раз и два. Обрати внимание на оба запроса, особенно какими кавычками обрамлено date.

Спустя 20 минут, 48 секунд (13.07.2011 - 15:40) Fess написал(а):
Цитата (PHPprogramer @ 13.07.2011 - 12:08)

Напиши вверху страницы
error_reporting(E_ALL);




не помогло

Цитата (PHPprogramer @ 13.07.2011 - 12:13)


Попробуй просто вывести на экран
SELECT * FROM news ORDER BY date DESC LIMIT $start,".NUM_NEWS_ON_PAGES

И посмотри правильно ли формируется запрос.


Всмылсе просто? в чем отличие должно быть от того, что есть...извиняюсь, если мой вопрос слишком глупый



Спустя 5 минут, 37 секунд Fess написал(а):
linker, извиняюсь, невнимательно посмотрел Ваш пост. Посмотрел на запросы, но по-прежнему не понимаю как добиться работоспособности первого, апострофы не помогли

Спустя 5 минут, 50 секунд (13.07.2011 - 15:46) Winston написал(а):
Цитата (Fess @ 13.07.2011 - 15:40)

Всмылсе просто? в чем отличие должно быть от того, что есть...извиняюсь, если мой вопрос слишком глупый

Да просто напиши
echo "SELECT * FROM news ORDER BY date DESC LIMIT $start,".NUM_NEWS_ON_PAGES

И посмотри, что будет выведено.
И linker правильно написал, ты не обрамил слово date обратными апострофами, то есть у тебя в запросе, date воспринимается как ключевое слово, для того, чтобы оно воспринималось как поле из которого нужно брать значение напиши так, как линкер в первом посте написал.

Спустя 1 минута, 8 секунд (13.07.2011 - 15:47) Админ написал(а):
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in - это означает, что вы не обработали возможные ошибки обработки SQL-запроса, такая ошибка возникла и функциия mysql_query() вернула false вместо дескриптора результирующей таблицы. Далее скрипт передаёт false функции mysql_fetch_array(), на что она естественно огрызается. Следует обработать возможные ошибки для всех функций mysql_query()

Спустя 2 минуты, 1 секунда (13.07.2011 - 15:49) Winston написал(а):
Да и как сказал Админ обработайте ошибки, то есть напишите
$res=$db->query("SELECT * FROM `news` ORDER BY `date` DESC LIMIT $start,".NUM_NEWS_ON_PAGES) or die(mysql_error());


Спустя 35 минут, 16 секунд (13.07.2011 - 16:25) Fess написал(а):
Цитата (PHPprogramer @ 13.07.2011 - 12:49)
Да и как сказал Админ обработайте ошибки, то есть напишите
$res=$db->query("SELECT * FROM `news` ORDER BY `date` DESC LIMIT $start,".NUM_NEWS_ON_PAGES) or die(mysql_error());

Написал, в ответ получил следующее ругательство:

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 '-4,4' at line 1

Спустя 5 минут, 11 секунд (13.07.2011 - 16:30) Winston написал(а):
Вот видишь где теперь собака зарыта
Цитата (Fess @ 13.07.2011 - 16:25)
near '-4,4'

В лимите подставляется отрицательное значение



Спустя 52 секунды PHPprogramer написал(а):
В переменной $start

Спустя 16 минут, 37 секунд (13.07.2011 - 16:46) Fess написал(а):
определил $start=0, запрос отработал
видимо $page изначально 0, но вот почему

Спустя 5 минут, 25 секунд (13.07.2011 - 16:52) Winston написал(а):
Откуда берется значение в $page ?

Спустя 20 часов, 33 минуты, 16 секунд (14.07.2011 - 13:25) Fess написал(а):
if (isset($_GET['page'])) {
$page=intval($_GET['page']);
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.