[PHP/MySQL] Błąd przy korzystaniu z dwóch baz

0

Witam. Chciałem zrobić funkcję, która będzie mi pobierała nick z bazy phpBB na podstawie podanego ID użytkownika. Napisałem więc taki kod:

function pobierz_nick($id)
{
	mysql_select_db("phpb1");
	$zapytanie = "SELECT * FROM `phpbb_users` WHERE `user_id`='".$id."'";
	$result = mysql_query($zapytanie);
	while($row = mysql_fetch_array($result))
	{
		$nick = $row['username'];
	}
		
	mysql_select_db("portal");		
	return $nick;
}

jednak gdy z niego korzystam wyświetla:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/*/public_html/wip/functions.php on line 21

gdzie linia 21 to

while($row = mysql_fetch_array($result))

Podane dane są na 100% dobre.

0
Greenek napisał(a)

user_id='".$id."'";
userid chyba nie jest tekstem, a liczbą.

0

Może potrzebny jest drugi argument w funkcji mysql_fetch_array np. MYSQL_ASSOC

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
0

może po prostu spróbuj:

$zapytanie = "SELECT * FROM phpbb_users WHERE user_id='$id'";
0

Rozwiązanie Zawadzkiego i Greenka to na jedno wychodzi. Fleminga wydaje mi się prawdopodobne, ale ja sprawdziłbym czy mysql_error czegoś nie zwraca po wydaniu query po prostu. Bo a nuż coś jest źle w zapytaniu (znaki akcentu? raczej nie, ale kto wie).

Swoją drogą - SELECT username FROM phpbb_users WHERE user_id='' LIMIT 1; wydałbym. Skoro chcesz tylko username to po co pobierać *? I pętla while też nie jest potrzebna, wystarczy jedno mysql_fetch_array, bo tylko jeden rekord jest zwracany.

0

Taki błąd jaki masz, oznacza, że zapytanie nie zwróciło poprawnego wyniku. Użyj:

$result = mysql_query($zapytanie) or die( mysql_error() );

1 użytkowników online, w tym zalogowanych: 0, gości: 1