Как вы присоединяетесь к MySQL Array? - PullRequest
1 голос
/ 16 января 2010

Функция implode () работает на обычных массивах, но не работает на массивах, созданных с помощью mysql_fetch_array (я также пробовал mysql_fetch_row)

Как заставить их работать?

определено выше:

$friends = mysql_query("SELECT * FROM friend 

WHERE u1 = '$ userinfo [username]' ИЛИ u2 = '$ userinfo [username]' ");

и далее вниз:

$friendsrow = mysql_fetch_array($friends);
$friendsrow = join(",",$friendsrow);

$friendnotes = mysql_query("SELECT nid,user,subject,message FROM friendnote WHERE user IN ($friendsrow) ORDER BY timestamp ASC LIMIT 0,5");

(Если вам интересно, это для сайта сообщества)

Ответы [ 4 ]

3 голосов
/ 26 сентября 2011
1 голос
/ 16 января 2010

Я думаю, что вы присоединились не к тому. Вы присоединяетесь к целому ряду друзей, поэтому результат «1, Джонни, 23 года и т. Д.». Я предполагаю, что вы хотите список идентификатора друга '1,2,3,4,5'. Как сказал Эймантас, лучше использовать подзапрос.

SELECT nid,user,subject,message 
FROM friendnote 
WHERE user IN ((SELECT u2 FROM friends WHERE u1 = $userinfo[username])
               UNION
               (SELECT u1 FROM friends WHERE u2 = $userinfo[username]))
ORDER BY timestamp ASC LIMIT 0,5
1 голос
/ 16 января 2010

Вы всегда можете использовать суб-выбор и передать его оператору IN().

0 голосов
/ 16 января 2010

mysql_fetch_array возвращает нормальные массивы, в них нет ничего особенного.Возможно, ваш запрос ничего не возвращает, и в этом случае mysql_fetch_array возвращает false.Проверьте это, прежде чем пытаться взорвать результат.

...