LIKE, запрос срабатывает, mysql_result() нет

iSlayter

Новичок
LIKE, запрос срабатывает, mysql_result() нет

Структура таблицы + данные:
CREATE TABLE `pr_covers` (
`id` int(4) NOT NULL auto_increment,
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`img_path` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

INSERT INTO `pr_covers` VALUES (1, '2007-07-08 00:00:00', '2007-07/demo.jpg');

SQL-запрос:
SELECT * FROM `pr_covers` WHERE `date` LIKE "2007-07%" LIMIT 0,1
Результат выполнения запроса в phpMyAdmin:
id date img_path
1 2007-07-08 00:00:00 2007-07/demo.jpg
При попытке получить значение `img_path` через mysql_result (да впрочем без разницы, хоть через _fetch):
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in */components/covers/index.php on line 5
PHP:
<?php
$date         = $params['date'];
$mysql->tmpl  = 'SELECT * FROM `' . PREFIX . 'covers` WHERE `date` LIKE "' . $date . '%%" LIMIT 0,1';
$mysql->query(__FILE__,__LINE__);
$src = mysql_result($mysql->result, 2);
echo '<img src="' . URL . 'images/covers/' . $date . '/' . $src . '" alt="Обложка выпуска от ' . $date . '"/>';
?>
Собственно вопрос, почему Warning получаю?
 

iSlayter

Новичок
Если бы mysql_error что-то выдал, то я бы сюда скорее всего не обратился, верно? Пустота в ответ на mysql_error
 

Wicked

Новичок
значит библиотека для работу с бд кривая.

сделай var_dump() в двух местах: в $mysql->query() сразу после выполнения запроса и перед mysql_result($mysql->result, 2);
 

iSlayter

Новичок
Сразу после запроса bool(true);
Перед mysql_result: bool(false) bool(false)

Без использования библиотеки результат тот же. Но mysql_error заговорил.

PHP:
<?php
$date         = $params['date'];
$query = 'SELECT * FROM `' . PREFIX . 'covers` WHERE `date` LIKE "' . $date . '%" LIMIT 0,1';
$result = mysql_query($query) or die(mysql_error());
$src = mysql_result($result,2) or die(mysql_error());
echo '<img src="' . URL . 'images/covers/' . $date . '/' . $src . '" alt="Обложка выпуска от ' . $date . '"/>';
?>
Warning: mysql_result(): Unable to jump to row 2 on MySQL result index 14 in */components/covers/index.php on line 4

НО! Самое интересное.
если сделать _fetch без библиотеки, то
PHP:
while ($row = mysql_fetch_array($result)) {
	print_r($row);
}
выдаёт:
Array
(
[0] => 1
[id] => 1
[1] => 2007-07-08 00:00:00
[date] => 2007-07-08 00:00:00
[2] => 2007-07/demo.jpg
[img_path] => 2007-07/demo.jpg
)
 

Wicked

Новичок
ты меня что-то за угол заводишь...

Сразу после запроса bool(true);
Перед mysql_result: bool(false) bool(false)
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
mysql_query в данном случае в принципе не может вернуть true. Так что ты что-то не то задампил.

Без использования библиотеки результат тот же.
ошибаешься.
Warning: mysql_result(): Unable to jump to row 2 on MySQL result index 14 in */components/covers/index.php on line 4
а зачем ты пытаешься перескочить на вторую запись в резалт сете, если она там может быть максимум одна?

-~{}~ 08.07.07 19:45:

кстати да, у тебя в первоначальной задаче еще одна ошибка :) Я только щас заметил, что там ты тоже обращаешься ко второй записи, которой в природе не существует. Но эта ошибка не возникает, т.к. первее возникает другая.
 

iSlayter

Новичок
Почитал мануал по поводу mysql_result, всё встало на свои места. Спасибо за помощь!
 
Сверху