błąd mysql_fetch_array

błąd mysql_fetch_array
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam! mam taki oto kod:

Kopiuj
<?

$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?

  • Rejestracja: dni
  • Ostatnio: dni
0

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

RU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
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:

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

Zapobiegnie to na pewno wielu problemom.

mephir
  • Rejestracja: dni
  • Ostatnio: dni
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:

Kopiuj
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.

frickle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 90
0

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

Kopiuj
$wiersz['pole1'];

to powinieneś pobierać go za pomocą

Kopiuj
$wiersz = mysql_fetch_assoc($wykonaj);

a nie

Kopiuj
$wiersz = mysql_fetch_array($wykonaj);

Kopiuj
tomkiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1193
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.

MikiKam
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

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

Kopiuj
<?
$zapytanie = "SELECT wiek FROM nba where imie=\'jordan\'"; // <-----
?>
johny_bravo
  • Rejestracja: dni
  • Ostatnio: dni
0

@MikiKam: Jordan to rowniez imie.

mephir
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.