błąd mysql_fetch_array

0

Witam! mam taki oto kod:

<?

$sql = mysql_connect ('host ,'user, 'pass');
$zapytanie = "SELECT wiek FROM nba where imie='jordan'";
$wykonaj = mysql_query($zapytanie);

$wiersz = mysql_fetch_array($wykonaj);
echo "Pole pierwsze".$wiersz['pole1']."<br>";
echo "Pole drugie".$wiersz['pole2']."<br>";
echo "Pole trzecie".$wiersz['pole3']."<br>";
echo $zapytanie."<br>";
echo $wykonaj."<br>";
?>

i nie mam pojęcia dlaczego, ale wywala mi błąd w mysql_fetch_array, takiej treści:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/k/u/kursmysql/test101.php on line 7

zapytanie na pewno jest poprawne bo wykonywałem je bez żadnego problemu w phpMyAdmin.

Może ktoś mi pomóc?

0

dodam jeszcze że do zmiennej $sql jest przypisywane "Resource id #2" zamiast "true/false"

0

Nie wiem czemu, ale wydaje mi się, że albo 4p miesza cytaty, albo ten kod nie ma prawa działać ze względu na błąd w 1-szej linji.

Jeśli chodzi o zapytanie to polecam troszkę inny system nazewnictwa i pewną konsekwencję, przy pisaniu zapytań sql:

$sql = 'SELECT `wiek` FROM `nba` WHERE `imie`= \'jordan\'';

Zapobiegnie to na pewno wielu problemom.

0

To nic nie da zapytanie jest poprawnie, jest między cudzysłowiem. Ewentualnie na końcu zapytania postawiłbym średnik, ale to już takie moje zboczenie.

U mnie by ten kod wyglądał tak:

mysql_connect ('host' ,'user', 'pass') or die('Nie można się połączyć z serwer MySQL!<br>'.mysql_error());
mysql_select_db('nazwa_bazy') or die('Nie można się połączyć z bazą danych!<br>'.mysql_error()); //o tej funkcji zapomniałeś
$zapytanie = "SELECT wiek FROM nba where imie='jordan';";
$wykonaj = mysql_query($zapytanie);
if($wiersz = mysql_fetch_array($wykonaj)){
echo "Wiek: ".$wiersz['wiek']."<br>".$zapytanie."<br>";
} else {
echo 'Kupa. Nic nie ma!';
}

A błąd masz albo w zapytanie albo zapomniałeś, że pobierasz tylko wiek. Bo jeżeli w tej tabeli masz te inne pola to wpisz takie zapytanie "SELECT pole1, pole2, pole3 FROM nba WHERE imie='jordan';", dodatkowo powiem że zapomniałeś wybrać bazy!

zakłopotany... napisał(a)

dodam jeszcze że do zmiennej $sql jest przypisywane "Resource id #2" zamiast "true/false"

I jak najbardziej jest to prawidłowe, bo nie ma tam true/false. Owszem false jest jeżeli połączenie się nie uda,a le jeżeli jest to masz zasób.

0

przy okazji, jeżeli chcesz się odwoływać do wyniku w taki sposób:

$wiersz['pole1'];

to powinieneś pobierać go za pomocą

$wiersz = mysql_fetch_assoc($wykonaj);

a nie

$wiersz = mysql_fetch_array($wykonaj);

0

@frickle - powinno się wiele rzeczy - myślę, że dopiero uczącym się nie warto zaprzątać głowy takimi optymalizacyjnymi niuansami :)

php.net napisał(a)

Godne uwagi jest to, że użycie mysql_fetch_array() nie jest znacząco wolniejsze od użycia mysql_fetch_row(), a jest bardziej funkcjonalne.

0

A ja dodam, ze Jordan to nazwisko nie imie ;-P

<?
$zapytanie = "SELECT wiek FROM nba where imie=\'jordan\'"; // <-----
?>
0

@MikiKam: Jordan to rowniez imie.

0

Tego if'a z mojego kodu możesz równiez zamienić na while, jeżeli chcesz aby wyświetlał więcej rekordów niż jeden.

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