PDA

Показать полную графическую версию : Сложный запрос mysql


venuko
02-05-2010, 20:27
Есть таблица _pages это страницы с контентом, к определенной странице можно прикрепить рекомендуемые страницы к просмотру, они пишутся в поле recomend тойже таблицы _pages в таком виде 1|2|5|7|9.

При выводе страницы на сайте внизу ссылки на эти рекомендуемые страницы.

Вот запрос, но он почемуто только выводит первую ссылку по номеру 1, другие нет:

$sql="SELECT * FROM ".$prefix."_pages WHERE pid=".$pid."";
$res=$db->sql_query($sql);
$row=$db->sql_fetchrow($res);
$pid = intval($row['pid']);
$recomend = $row['recomend'];
$where = $recomend;
$where = str_ireplace("|", " OR WHERE pid=", $where);
if (!empty($recomend)) {
$query2 = $db->sql_query("SELECT pid, title FROM ".$prefix."_pages WHERE pid='".$where."'") or die(mysql_error());
while($row4 = $db->sql_fetchrow($query2)) {
$pid2 = $row4['pid'];
$title2 = $row4['title'];
echo "$pid2 - $title2 <br/>";
}
}

Буду признателен за помощь

venuko
02-05-2010, 20:51
:( видимо сложный вопрос

Sham
03-05-2010, 00:58
выведите текст получившегося запроса в браузер, и посмотрите, корректно ли составлен запрос.

вижу что в $where без кавычек, а в самом запросеWHERE pid='".$where."'" »
кавычки есть. Результирующий запрос мб неправильным.
такжеwhile($row4 = $db->sql_fetchrow($query2)) { »
судя по названию метода sql_fetchrow он вытаскивает только 1 строку из результата запроса. Выводы делайте сами.

Igor_I
05-05-2010, 22:15
venuko, вчитался :)
WHERE может быть только один раз.

$where = str_ireplace("|", " OR pid=", $where);
...
$query2 = $db->sql_query("SELECT pid, title FROM ".$prefix."_pages WHERE '".$where."'") or die(mysql_error());




© OSzone.net 2001-2012