Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kiedy dane z bazy są wysyłane do interpretera php?
Forum PHP.pl > Forum > Bazy danych > MySQL
janek
Witam,

Z tego co wiem funkcja mysql_query() pobiera uchwyt do wyniku z zapytania, a dopiero funckja np. mysql_fetch_assoc() daje dostęp do danych.

Wiecie może gdzie faktycznie znajduje się wynik zapytania do którego prowadzi uchwyt zwracany przez mysql_query()? Pytam, ponieważ mam problem z adminem, który twierdzi że już na etapie mysql_query() MySql wysyła dane do interpretera php i z tego powodu każe mi optymalizować zapytania. Pytam o to, ponieważ mam taki przypadek, że wykonuję mysql_query() a nastepnie nie wykonuję mysql_fetch_assoc() i nie wiem na ile ma sens to co on mówi (czyli czy to ja piszę słabe zapytania czy może on oferuje mi mało wydajną bazę).

Z góry dziękuję za pomoc smile.gif

J.
thornag
Po sparsowaniu lini
  1. <?php
  2. $result = mysql_query($query)
  3. ?>

Wynik zapytania siedzi w zmiennej $result co chyba jasno obrazuje powyzsza linijka.

W momencie kiedy chcesz wyswietlic taki wynik albo uzyc go do dalszych dzialan musisz taki wynik sparsowac do postaci wygodnej dla php, sluza do tego funckcje z rodziny mysql_fetch_* (w przypadku mysqla oczywiscie)

Nie widze sensu wykonywania zapytania jesli pozniej nijak nie korzysta sie z wyniku (nie tylko fetchem ale tez np mysql_num_rows()).

Zasada prosta, im mniej zapytan tym lepiej i szybciej, wiec jesli wysylasz zapytania i nijak nie korzystasz z wyniku to ciezko powiedziec zeby Twoje zapytania byly malo optymalne, one sa zbedne smile.gif
janek
Dzieki za odpowiedz.

Czyli jak rozumiem po mysql_query wynik idzie do interpretera php. O to mi chodziło. Dzięki smile.gif

Na marginesie: nie pisałem że nie korzystam z zapytań, napisałem tylko że nie używam mysql_fetch_assoc(). Akurat trafiłeś, po mysql_query() jest mysql_num_rows() ... ale już to sobie zoptymalizowałem. Chodziło mi tylko o odpowiedz na pytanie zawarte w temacie posta.

Dzięki raz jeszcze smile.gif
thornag
Jesli chodzi o num_rows() to jesli juz optymalizujesz to zmien zapytania na SELECT COUNT(pole) AS nazwa, wtedy nie bedzies zmsuial ciagnac ogromnej ilosci rekordow z bazy tylko po to zeby je sobie policzyc, korzystaj z funkcji ktore oferuje sama baza, mozna zaoszczedzic sporo czasu i wysilku.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.