Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql]Mała pomoc, nie rozumiem kodu
Forum PHP.pl > Forum > Przedszkole
HaMtAr0
Otóż jest w mojej książce pewien listing którego nie rozumiem:
  1. <!DOCTYPE HTML PUBLIC
  2.  "-//W3C//DTD HTML 4.01 Transitional/XEN"
  3.  "http://www.w3.org/TR/html401/loose.dtd">
  4. <html>
  5. <head>
  6.  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  7.  <title>Struktura tabeli wine</title>
  8. </head>
  9. <body><pre>
  10. <?php
  11.  // Nawiąż połączenie z serwerem i wybierz bazę winestore
  12.  $connection = mysql_connect("localhost","adam","xxx");
  13.  mysql_select_db("winestore", $connection);
  14.  // Wykonaj zapytanie na tabeli wine bazy winestore, zwracające 1 wiersz
  15.  $result = mysql_query ("SELECT * FROM wine LIMIT 1", $connection);
  16.  // Wyświetl nagłówki dopełnione spacjami
  17.  print str_pad("Pole", 20) .
  18.  str_pad("Typ", 14) .
  19.  str_pad("Null", 6) .
  20.  str_pad("Klucz", 5) .
  21.  str_pad("Dodatkowe informacje", 12) . "n";
  22.  
  23.  // Ile jest atrybutów?
  24.  $x = mysql_num_fields($result);
  25.  
  26.  // Dla każdego atrybutu w zbiorze wyników
  27.  for($y=0;$y<$x;$y++)
  28.  {
  29. // Pobierz jego metadane
  30. $info = mysql_fetch_field ($result);
  31. // Wyświetl jego nazwę
  32. print str_pad($info->name, 20);
  33. // Wyświetl typ danych
  34. print str_pad($info->type, 6);
  35. // Podaj w nawiasie długość pola, np.(2)
  36. print str_pad("({$info->max_length})", 8);
  37. // Wyświetl TAK jeżeli atrybut może przyjmować wartość NULL
  38. if ($info->not_null != 1)
  39. print " TAK ";
  40. else
  41. print "  ";
  42.  
  43. // Wyświetl wybrane informacje o indeksach
  44. if ($info->primary_key == 1)
  45.  print " PRI ";
  46. elseif ($info->multiple_key == 1)
  47.  print " MUL ";
  48. elseif ($info->unique_key == 1)
  49.  print " UNI ";
  50. // Jeżeli pole jest wypełnione zerami, wyświetl:
  51. if ($info->zerofill)
  52.  print " Wypełnione zerami";
  53. // Rozpocznij nowy wiersz
  54. print "n";
  55.  }
  56. ?>
  57. </pre>
  58. </body>
  59. </html>


Natomiast jak jest
  1. // Wykonaj zapytanie na tabeli wine bazy winestore, zwracające 1 wiersz
  2.  
  3. SELECT * FROM wine LIMIT 1

o co chodzi z zwracaniem jednego wiersza? zwracane jest 6 ( wynik na dole ), dlaczego jest jest limit 1?questionmark.gif
Kod
Pole                Typ           Null  KluczDodatkowe informacje
wine_id             int   (1)           PRI
wine_name           string(9)           MUL
wine_type           int   (1)          
year                int   (4)          
winery_id           int   (1)           MUL
description         blob  (0)      TAK
nospor
1) czy wiecej odstepow miedzy kazdą linia nie mogles juz zrobic? Pomysl czasami o czytających. Popraw
2)
proszę poprawić tytuł o znacznik zgodnie z zasadami forum Przedszkole:
Temat: Tematyka i zasady panujace na forum Przedszkole



Limit 1 zwraca jeden rekord. To ze ty widzisz kilka linii tekstu nie znaczy ze zostalo zwroconych wiecej niz jeden rekord. Tu masz manual:
http://pl.php.net/manual/pl/
i zobacz co robia twoje funkcje mysql_num_fields oraz mysql_fetch_field
biggrin.gif
HaMtAr0
poprawione i sprawdzone
  1. <?php
  2. // Wykonaj zapytanie na tabeli wine bazy winestore, zwracające 1 wiersz
  3.  $result = mysql_query ("SELECT * FROM wine LIMIT 1", $connection);
  4. ?>

jeżeli dobrze myślę wiersz==rekord to nie rozumiem
wine_id, wine_name, wine_type, year, winery_id. description, to atrybuty, więc to one jako pierwsze są przekazywane, stąd ten limit 1?
nospor
a prosilem bys zajrzal do manuala i sprawdzil te funkcje co ci podalem.

select zwraca rekordy (wartosci kolumn). W twoim przykladzie pobieraja jeden rekord danych, ale ich dane nie obchodzą. ich obchodzą kolumny w tabeli i pobieraja innymi funckjiami (o ktorych miales w manualu przeczytac) kolumny i ich wlasciwosci. Jak na moj gust to bardzo mylaco to zrobili i tyle.

podsumowajac: jak nie interesuja sie typy kolumn a tylko rekordy (w wiekszosci wypadkow interesuja nas wlasnie rekordy) to olej ten przyklad smile.gif
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.