błąd mysql_fetch_array

błąd mysql_fetch_array
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?

0

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

RU
  • Rejestracja:ponad 20 lat
  • Ostatnio:około 17 lat
  • 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:prawie 19 lat
  • Ostatnio:ponad 16 lat
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.


"Zdrowy rozsądek to zbiór uprzedzeń nabytych do osiemnastego roku życia." - Albert Einstein
<img src="http://img.mephir.net/fedorauser.png" alt="user image" />
frickle
  • Rejestracja:ponad 19 lat
  • Ostatnio:9 miesięcy
  • 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

<p>Linux is like vigwam. No Gates, No Windows only Apache inside.</p>
<p>Lepiej kijek obcinkować niż go potem pogrubasić</p>
tomkiewicz
  • Rejestracja:około 23 lata
  • Ostatnio:prawie 3 lata
  • 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:ponad 19 lat
  • Ostatnio:ponad 6 lat
  • 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:około 19 lat
  • Ostatnio:ponad 13 lat
0

@MikiKam: Jordan to rowniez imie.


You need to learn how to walk
before you can run
mephir
  • Rejestracja:prawie 19 lat
  • Ostatnio:ponad 16 lat
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.


"Zdrowy rozsądek to zbiór uprzedzeń nabytych do osiemnastego roku życia." - Albert Einstein
<img src="http://img.mephir.net/fedorauser.png" alt="user image" />

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.