Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Pomoc w zrozumieniu zapytania
Forum PHP.pl > Forum > Przedszkole
adrian54
Witam pisze prosty skrypt który ma za zadanie stworzyć stronę z odnośnikiem do poprzedniego i następnego wpisu z bazy danych. Znalazłem już rozwiązanie jak napisać odpowiednie zapytanie i umiem je zmodyfikować do swoich potrzeb ale go nie rozumiem czy ktoś mógł by mi pomóc i wyjaśnić co się dzieje w tym zapytaniu? Konkretnie nie rozumiem linij numer 3 i 6 oraz co w zapytaniu oznacza e1, e2 i e3. Będę bardzo wdzięczny za pomoc.

kod zapytania:
  1. SELECT id,
  2. (SELECT id FROM playlista e2
  3. WHERE e2.id < e1.id
  4. ORDER BY id DESC LIMIT 1) AS previous_value,
  5. (SELECT id FROM playlista e3
  6. WHERE e3.id > e1.id
  7. ORDER BY id ASC LIMIT 1) AS next_value
  8. FROM playlista e1
  9. WHERE id = 39


kod tabeli z bazy danych:
  1. SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  2. SET time_zone = "+00:00";
  3.  
  4.  
  5.  
  6. CREATE TABLE IF NOT EXISTS `playlista` (
  7. `id` int(11) NOT NULL,
  8. `ID_filmu` int(11) NOT NULL,
  9. `ID_uzytkownika` int(11) NOT NULL,
  10. `nazwaPlaylisty` varchar(255) COLLATE utf8_polish_ci NOT NULL
  11. ) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  12.  
  13.  
  14.  
  15. INSERT INTO `playlista` (`id`, `ID_filmu`, `ID_uzytkownika`, `nazwaPlaylisty`) VALUES
  16. (36, 16, 5, 'ulubione'),
  17. (37, 13, 5, 'ulubione'),
  18. (38, 10, 5, 'ulubione'),
  19. (39, 9, 5, 'ulubione'),
  20. (48, 17, 5, 'ulubione');
  21.  
  22.  
  23. ALTER TABLE `playlista`
  24. ADD PRIMARY KEY (`id`);
  25.  
  26.  
  27. ALTER TABLE `playlista`
  28. MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=53;
CuteOne
A < B - A jest mniejsze od B
A > B - A jest większe od B

e1, e2, e3 itd. są to aliasy, pomocne np. podczas wielokrotnego korzystania z tej samej tabeli w jednym zapytaniu do bazy
Turson
e1, e2, e3 to są aliasy do nazwy tabeli
adrian54
mam jeszcze jedno pytanie otóż zapytania wykonuje w taki sposób:
  1. $zapytanie1 = //treść zapytania
  2.  
  3. if($wynik = $polaczenie->query($zapytanie1))
  4. {
  5. // co ma się stać jeśli zapytanie zostanie wykonane
  6. }
  7. else
  8. {
  9. // co ma się stać jeśli będziemy mieli błąd przy wykonywaniu zapytania
  10. }


i tu pojawia się problem ponieważ nie wiem jak wyciągnąć kod błędu zapytania próbowałem na różne sposoby podane w dokumentacji php i żaden w moim wypadku nie działa np ten sposób
  1. print_r($polaczenie->errorInfo());
zwraca komunikat: Fatal error: Call to undefined method mysqli::errorInfo() in C:\xampp\htdocs\pk\wyszukaj.php on line 108
próba pobranie errorCode działa zwraca ten sam komunikat
Daimos
a wystarczy zajrzeć do manuala:
  1. <?php
  2. $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
  3.  
  4. /* check connection */
  5. if ($mysqli->connect_errno) {
  6. printf("Connect failed: %s\n", $mysqli->connect_error);
  7. exit();
  8. }
  9.  
  10. if (!$mysqli->query("SET a=1")) {
  11. printf("Errormessage: %s\n", $mysqli->error);
  12. }
  13.  
  14. /* close connection */
  15. $mysqli->close();
  16. ?>


Błędy siedzą w zmiennej publicznej $mysqli->error
adrian54
faktycznie dział wielkie dzięki za pomoc
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.