|
|
|
| Сформировал такой запрос
"SELECT text, DATE_FORMAT(date, '%d.%m.%Y %H:%i') AS date FROM table WHERE userID=(SELECT friendsID FROM table_friends WHERE userID=6) ORDER BY id DESC LIMIT 5";
в котором мне нужно вывести текст друзей. Есть отдельная таблица друзей(table_friends) с парой id(userID) напротив id(friendsID) его друга. Предполагается вывести текст по userID где userID в таблице друзей стоит напротив 6 id друга.
Этот запрос выдает ошибку:
Warning: mysql_query() [function.mysql-query]: Unable to save result set in C:\www\html\�����\Untitled-2.php on line 38
Could not successfully run query () from DB: Subquery returns more than 1 row
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\www\html\�����\Untitled-2.php on line 48
Could not successfully run query () from DB: 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 '' at line 1
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\www\html\�����\Untitled-2.php on line 56
Помогите разобраться | |
|
|
|
|
|
|
|
для: ruslanaxti
(18.04.2011 в 14:27)
| | У вас подзапрос возвращает более одной строки, поэтому нельзя использовать =, либо добавьте в подзапрос LIMIT 1
SELECT text, DATE_FORMAT(date, '%d.%m.%Y %H:%i') AS date
FROM table
WHERE userID=(SELECT friendsID FROM table_friends WHERE userID=6 LIMIT 1)
ORDER BY id DESC
LIMIT 5
| либо используйте конструкцию IN
SELECT text, DATE_FORMAT(date, '%d.%m.%Y %H:%i') AS date
FROM table
WHERE userID IN (SELECT friendsID FROM table_friends WHERE userID=6)
ORDER BY id DESC
LIMIT 5
|
| |
|
|
|
|
|
|
|
для: cheops
(18.04.2011 в 14:42)
| | Беда всегда приходит не одна!
Запрос теперь работает правильно, но в моем скрипте нужно вывести 5 строк, которые функция mysql_fetch_assoc не перебирает с вложенным запросом
$query="SELECT id,fitne_text,connect_table,id_row, DATE_FORMAT(date, '%d.%m.%Y %H:%i') AS date FROM axt_fitne WHERE userID=(SELECT friendsID FROM axt_friends WHERE userID=6 LIMIT 1) ORDER BY id DESC LIMIT 5";
$i=0;
while($i<5){
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);
// запрос извлекает данные пользователя имя, фамилие, фото по его userID на основе
// предыдушего запроса
$query_datauser="SELECT name,family,foto FROM axt_user WHERE userID=".$row['userID'];
$result2=mysql_query($query_datauser);
$row2=mysql_fetch_assoc($result2);
// шаблон вывода данных
echo '<div class="fitne">';
echo '<div class="fitne_foto">';
echo '<img src="images/'.$row2['foto'].'" width="50" height="50" /></div>
<div class="fitne_text"><span class="format_name">'.$row2['name'].' '.$row2['family'].': '.'</span>'.$row['fitne_text'].'<br />
<div class="fitne_time">'.$row['date'].'</div></div>
</div>';
$i++;
}
этот запрос выводит только одну и туже строку 5 раз и выдает ошибку
Could not successfully run query () from DB: 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 '' at line 1
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\www\html\�����\Untitled-2.php on line 58 | |
|
|
|
|
|
|
|
для: ruslanaxti
(18.04.2011 в 18:42)
| | прошу прошения! этот запрос выводит только одну и туже строку 5 раз (без ошибок) | |
|
|
|
|
|
|
|
для: ruslanaxti
(18.04.2011 в 18:42)
| | Хм... ну все верно, вы же его 5 раз выполняете функцией mysql_query(). Лучше обработать его следующим образом
<?php
$query="SELECT id,fitne_text,connect_table,id_row,
DATE_FORMAT(`date`, '%d.%m.%Y %H:%i') AS `date`
FROM axt_fitne
WHERE userID=(SELECT friendsID FROM axt_friends WHERE userID=6 LIMIT 1)
ORDER BY id DESC
LIMIT 5";
$result=mysql_query($query);
if(!$result) exit("Ошибка выполнения запроса - ".mysql_error());
if(mysql_num_rows($result))
{
while($row = mysql_fetch_assoc($result))
{
// запрос извлекает данные пользователя имя, фамилие, фото по его userID на основе
// предыдушего запроса
$query_datauser="SELECT name,family,foto FROM axt_user WHERE userID=".$row['userID'];
$result2=mysql_query($query_datauser);
if(!$result2) exit("Ошибка выполнения запроса - ".mysql_error());
$row2=mysql_fetch_assoc($result2);
// шаблон вывода данных
echo '<div class="fitne">';
echo '<div class="fitne_foto">';
echo '<img src="images/'.$row2['foto'].'" width="50" height="50" /></div>
<div class="fitne_text"><span class="format_name">'.$row2['name'].' '.$row2['family'].': '.'</span>'. $row['fitne_text'].'<br />
<div class="fitne_time">'.$row['date'].'</div></div>
</div>';
}
}
?>
|
| |
|
|
|