[PHP] Pytanie o mysql_fetch_assoc

while($rekordy=mysql_fetch_assoc($show) or die('2hhjj'))

{

   $id = $rekordy['id'];

   $auto = $rekordy['auto'];

   $wydech = $rekordy['wydech'];

   $tloki = $rekordy['tloki'];

   $zawory = $rekordy['zawory'];

   $swiece = $rekordy['swiece'];

   $amortyzatory = $rekordy['amortyzatory'];

   $opony = $rekordy['opony'];

   $hamulce = $rekordy['hamulce'];

   $wal = $rekordy['wal'];

   $turbo = $rekordy['turbo'];

   $nitro = $rekordy['nitro'];

   $odchudzanie = $rekordy['odchudzanie'];

   $skrzynia = $rekordy['skrzynia'];

}

Czy w 1 linijce mogę użyć tej funkcji or die?

Jeśli tak, to czy ten komunikat o błędzie może się pojawić, gdy 1 linijka jest poprawna a inna nie?

najlepiej to zrób tak:

$show = mysql_query("SELECT ...") or die('2hhjj');

while($rekordy=mysql_fetch_assoc($show)){

    $id = $rekordy['id'];

    ....

i skrypt “umrze” (w przypadku błędu), zanim zacznie się pętla

Przepisywanie zmiennych w tej sposób jest mało efektywne. Jeżeli już naprawdę nie chcesz używać tablicy to użyj list()

<?

$connect = mysql_connect('...l', '...', '...') or die ('Nie można połączyć się z bazą');

$selectdb = mysql_select_db ('...') or die ('Nie można wybrać bazy danych');

$show = mysql_query ("SELECT * FROM czesci WHERE id = '1'" or die('Blad w pytaniu 0'));

while($rekordy=mysql_fetch_assoc($show))

{

list($id , $auto, $wydech, $tloki, $zawory, $swiece, $amortyzatory, $opony, $hamulce, $wal, $turbo, $nitro, $odchudzanie, $skrzynia) = $rekordy or die ('Błąd w pytaniu 1');

}

echo("$id"); 

?>

Ok, poprawiłem nieco listing, ale nadal nie działa. myślę, że użyłem złej składni polecenia mysql_fetch_assoc.

spróbuj to:

<?

$show = mysql_query ("SELECT * FROM czesci WHERE id = '1' ") or die('Blad w pytaniu 0');

while($rekordy=mysql_fetch_assoc($show))

{

list($id , $auto, $wydech, $tloki, $zawory, $swiece, $amortyzatory, $opony, $hamulce, $wal, $turbo, $nitro, $odchudzanie, $skrzynia) = $rekordy;

}

echo("$id"); 

?>

EDIT

Grzesie1k nie mąć mu, najpierw ma działać - optymalizacja potem :smiley:

Jeżeli decydujesz się na list() to dobrym pomysłem byłoby również zastąpienie mysql_fetch_assoc() na mysql_fetch_row(), które działa szybciej.

ok, zastąpione ;). Ale nadal nie działa. Dokłądniej ta linijka

while($rekordy=mysql_fetch_row($show))

A cały kod to:

<?

$connect = mysql_connect[..];

$selectdb = mysql_select_db ('fullimpact_c0_pl') or die ('Nie można wybrać bazy danych');

$show = mysql_query ("SELECT * FROM czesci WHERE id = '1'" or die('Blad w pytaniu 0'));

while($rekordy=mysql_fetch_row($show))

list($id , $auto, $wydech, $tloki, $zawory, $swiece, $amortyzatory, $opony, $hamulce, $wal, $turbo, $nitro, $odchudzanie, $skrzynia) = $rekordy or die ('Błąd w pytaniu 1');

echo("$id"); 

?>

Nic nie pisze więc błąd widnieje w linii z zainicjowaniem pętli.

jakie zastąpione ??

$show = mysql_query ("SELECT * FROM czesci WHERE id = '1'" or die('Blad w pytaniu 0')); // twoje

$show = mysql_query ("SELECT * FROM czesci WHERE id = '1' ") or die('Blad w pytaniu 0'); // moje

widzisz różnicę ??

EDIT

a tak w ogóle to wyświetl sobie mysql_error() zamiast “Blad w pytaniu 0” będziesz wiedział co nie działa; na razie dla testów, potem może być ten “Bład…”

EDIT 2

dodatkowo zgubiłeś nawiasy przy pętli

EDIT 3

po co ci ten die() przy listowaniu ??

W niektórych językach czasami można pomnąć nawiasy- widać tutaj nie…

Żeby się upewnić, że linijka z funkcją list dobrze działą.

Ok, dzięki

list() z die() zadziała tylko w tedy jeżeli tablica nie będzie miała wystarczającej ilości elementów by zapełnić zmienne, a w przypadku mysql znasz przecież liczbę elementów.

tak można pominąć, ale nie jak w tym przykładzie masz w pętli robić więcej niż jedną rzecz (tu listowanie i echo id każdej części )

BTW

echo można używać bez nawiasów; np: echo $id;