Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]UPDATE i SELECT oraz zamykanie bazy
Forum PHP.pl > Forum > Przedszkole
lepmajster
Witam
Mam dwa pytania, bo chce w miare zoptymalizowac sobie zapytania do bazy, aby nie robic zbednych zapytan.

1. Czy robiac zapytanie UPDATE mozna odrazu pobrac dane (cos w stylu SELECT)?
2. Jak zamknac polaczenie z baza, gdy lacze sie z nia za pomoca funkcji:
  1. function polaczSQL($dbname){
  2. $dbhost = "localhost";
  3. $dbuser = "root";
  4. $dbpass = "***";
  5. $dbc = mysql_connect($dbhost, $dbuser, $dbpass);
  6. mysql_select_db ($dbname);
  7. mysql_query("SET NAMES 'utf8'");
  8. }

Gdy zrobie mysql_close($dbc), poza ta funkcja, to chyba uchwyt $dbc nie bedzie ustawiony, bo ta zmienna jest lokalna (tylko wewnatrz funkcji).

EDIT: Jeszcze trzecie pytanko (wybaczcie, ale dawno sie SQL nie bawilem)

3. Jak pobrac pojedynczy rekord z bazy sql? Bo mysql_fetch_array() zwraca nam tablice z cala zawartoscia bazy, a mozna pobrac tylko pojedynczy rekord?
Pozdrawiam
daros17
Z tego co wiem to nie możesz wykonać dwóch zapytań jednocześnie.

sadistic_son
Pobranie tylko jednegj komorki:
  1. $rekord=mysql_result(mysql_query("SELECT name FROM tabela WHERE id=2"),0);

Do pobrania tylko jednego rekordu, mimo iz wiecej spelnia zapytanie uzyj LIMIT 1 np:
  1. SELECT name FROM tabela WHERE id>20 LIMIT 1

Do zamkniecia polaczenia zrob po prostu mysql_close();
lepmajster
Dzieki za pomoc smile.gif

Cytat(daros17 @ 21.11.2010, 13:04:38 ) *
Z tego co wiem to nie możesz wykonać dwóch zapytań jednocześnie.

Jestes pewien?
Bo mi sie wydaje, ze gdzies tutaj byl temat z UPDATE, gdzie w jednym zapytaniu robiono update i pobierano dane - ale nie moge znalesc :/


Cytat(sadistic_son @ 21.11.2010, 13:34:47 ) *
Pobranie tylko jednegj komorki:
  1. $rekord=mysql_result(mysql_query("SELECT name FROM tabela WHERE id=2"),0);

Do pobrania tylko jednego rekordu, mimo iz wiecej spelnia zapytanie uzyj LIMIT 1 np:
  1. SELECT name FROM tabela WHERE id>20 LIMIT 1

Do zamkniecia polaczenia zrob po prostu mysql_close();

Cos mi z tym mysql_result() nie wychodzi, ciagle mam NULL zwracane :/
  1. $zapytanie = "SELECT * FORM `users` WHERE `ID`='10' LIMIT 1";
  2. $dane = mysql_result(mysql_query($zapytanie), 0);
  3. var_dump($dane);

Cos robie zle?
modern-web
  1. $zapytanie = "SELECT * FORM `users` WHERE `ID`='10' LIMIT 1";
  2. $dane = mysql_result(mysql_query($zapytanie), 0);
  3. var_dump($dane);


Nie SELECT * FORM tylko SELECT * FROM smile.gif
lepmajster
Cytat(modern-web @ 21.11.2010, 14:15:33 ) *
  1. $zapytanie = "SELECT * FORM `users` WHERE `ID`='10' LIMIT 1";
  2. $dane = mysql_result(mysql_query($zapytanie), 0);
  3. var_dump($dane);


Nie SELECT * FORM tylko SELECT * FROM smile.gif

Dzieki, wlasnie tez przed chwila zauwazylem - ale gafa (FORM biggrin.gif )
Do tego usawilem dla body background-color: black;, a nie zmienilem koloru czcionek, wiec nawet nie widzialem komunikatu o bledzie biggrin.gif
Chyba jeszcze po sobocie nie doszedlem do siebie winksmiley.jpg
modern-web
Tak to już jest winksmiley.jpg
Każdemu może się zdarzyć - szczególnie po tak udanej nocy (jak się domyślam) biggrin.gif

Pozdrawiam.
lepmajster
EDIT:
To jeszcze jedno pytanie.
mysql_result() zwraca tylko jeden rekord z danego wiersza?
Nie da sie zrobic tak, aby zwracalo caly wiersz w tablicy, czy po prostu do tego uzyc mysql_fetch_array(), ale bez petli while?
modern-web
Zrób coś w ten deseń:

  1. $query = mysql_query("SELECT * FROM x WHERE x = '$x' ORDER BY x ASC LIMIT 0,1");
  2. while($rekord = mysql_fetch_array($query))
  3. {
  4. $wynik .= '
  5. '.$rekord[0].'
  6. '.$rekord[1].'
  7. '.$rekord[2].'
  8. '.$rekord[3].'
  9. '.$rekord[4].'
  10. ';
  11. }


Pamiętaj, że rekordy zliczane są od 0 (nie od 1) smile.gif

P.S. lepiej użyj pętli smile.gif
lepmajster
Ja myslalem nad takim czyms:
  1. $query = mysql_query("SELECT * FROM `users` WHERE `ID`='10'");
  2. $dane = mysql_fetch_array($query); // bez WHILE, poniewaz wiem, ze bede mial zwrocony tylko 1 wiersz
  3. echo $dane['imie'].$dane['nazwisko'].$dane['mail'];

Ale nie wiem, czy jest to poprawne zastosowanie tej funkcji mysql_fetch_array() i czy do takich rzeczy, nie ma czegos "lepszego".
Pozdrawiam
modern-web
Z tego co wyczytałem w manualu Twoje zastosowanie tej funkcji jest jak najbardziej poprawne smile.gif

Nie przychodzi mi do głowy inne rozwiązanie...
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.