Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Problem z SELECT
mysql_php
post 6.08.2006, 10:02:21
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

Ostrzeżenie: (0%)
-----


Proszę Was o pomoc z zlokalizowaniu błędu w tym SELECT. Szukałem i nie mam pojęcia co jest nie tak:

  1. <?php
  2.  
  3. $polacz = mysql_connect('localhost', 'root', 'XXXXXX');
  4. $wybierz = mysql_select_db('wypozyczalnia');
  5.  
  6. $zapytanie = "SELECT ID_wypozyczenia, ID_filmu, f_nazwa, f_nazwa_pl, ID_osoby, o_nazwisko
    , o_imie, w_data_wyp, w_data_zwr, w_data_plan, w_ilosc_dni_przeterm, w_uwagi, w_status
  7. FROM 'wypozycz', 'filmy', 'gatunek'
  8. WHERE wypozycz.ID_filmu=filmy.ID_filmu AND wypozycz.ID_osoby=osoby.ID_osoby";
  9. $wynik = mysql_query($zapytanie);
  10.  
  11. while ($row = mysql_fetch_array($wynik))
  12. {
  13. printf ("<tr><td>$row[ID_wypozyczenia]</td>
  14.  <td>$row[ID_filmu]</td>
  15.  <td>$row[f_nazwa]</td>
  16.  <td>$row[f_nazwa_pl]</td>
  17.  <td>$row[ID_osoby]</td>
  18.  <td>$row[o_nazwisko]</td>
  19.  <td>$row[w_data_wyp]</td>
  20.  <td>$row[w_data_zwr]</td>
  21.  <td>$row[w_data_plan]</td>
  22.  <td>$row[w_ilosc_dni_przeterm]</td>
  23.  <td>$row[w_uwagi]</td>
  24.  <td>$row[w_status]</td>
  25.  
  26. </tr>");
  27. }
  28. ?>


wyświetla mi taki komunikat:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wamp\www\Najnowszy\pokaz_wypozyczenia.php on line 40
Go to the top of the page
+Quote Post
mike
post 6.08.2006, 10:05:23
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Ten wątek: Najczęstsze błędy, (Zanim zapytasz, to sprawdź) pokazuje sposoby szukania błędów samemu. Korzystaj z niego.
W pierwszym poście ~TomASS pokazuje jak możesz sam sobie pomóc.

A jak bedziesz wiedział gdzie jest błąd i nie będziesz potrafił sobie z nim poradzić, to dopiero pisz na forum.
Go to the top of the page
+Quote Post
mysql_php
post 6.08.2006, 10:12:35
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

Ostrzeżenie: (0%)
-----


ok, zastosowałem funkcję mysql_error() ale nie wiele więcej mi to mówi. Wiem, że błąd jest gdzieś w SELECT. Ale nadal nie wiem gdzie, pomóżcie mi proszę bo już mi oczy wychodzą z orbit od wpatrywania się:

SELECT ID_wypozyczenia, ID_filmu, f_nazwa, f_nazwa_pl, ID_osoby, o_nazwisko, o_imie, w_data_wyp, w_data_zwr, w_data_plan, w_ilosc_dni_przeterm, w_uwagi, w_status FROM 'wypozycz', 'filmy', 'gatunek' WHERE wypozycz.ID_filmu=filmy.ID_filmu AND wypozycz.ID_osoby=osoby.ID_osoby
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''wypozycz', 'filmy', 'gatunek' WHERE wypozycz.ID_filmu=filmy.ID_f' at line 2
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wamp\www\Najnowszy\pokaz_wypozyczenia.php on line 42

Ten post edytował mysql_php 6.08.2006, 10:13:04
Go to the top of the page
+Quote Post
mike
post 6.08.2006, 10:16:10
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Jak masz błąd w składnie zapytania to powinieneś szukać w dokumentacji MySQL'a.
Tutaj powiem Ci, że błąd Twój polega na tym, że dałeś apostrofy przy nazwach tabel.
  1. ... FROM 'wypozycz', 'filmy', 'gatunek' WHERE ...

a powinno ich tam nie być, lub powinny byc "odwrócone" apostrofy
  1. ... FROM `wypozycz`, `filmy`, `gatunek` WHERE ...
Go to the top of the page
+Quote Post
mysql_php
post 6.08.2006, 10:19:23
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

Ostrzeżenie: (0%)
-----


bardzo dziekuje! Proszę jeszcze o ostatnia pomoc, otóz teraz pojawia mi sie komunikat :

Column 'ID_filmu' in field list is ambiguous

O co tu chodzi? Kolumna ID_filmu jest dwuznaczna questionmark.gif Przecież jakoś muszę pokazac relacje.

Ten post edytował mysql_php 6.08.2006, 10:21:14
Go to the top of the page
+Quote Post
mike
post 6.08.2006, 10:23:12
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


W tym fragmencie:
  1. SELECT ID_wypozyczenia, ID_filmu, f_nazwa, f_nazwa_pl ...

pole ID_filmu jest niejednoznaczne. Zwróć uwagę że masz takie pole w więcej niż w jednej tabeli, dlatego baza nie wie co ma wybrać.
Musisz określić zasób z którego będą pobierane te dane.
Na przykład:
  1. SELECT ID_wypozyczenia, wypozycz.ID_filmu, f_nazwa, f_nazwa_pl ...

lub
  1. SELECT ID_wypozyczenia, filmy.ID_filmu, f_nazwa, f_nazwa_pl ...

Zależnie od tego czego potrzebujesz.
Go to the top of the page
+Quote Post
mysql_php
post 6.08.2006, 10:29:42
Post #7





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

Ostrzeżenie: (0%)
-----


no to teraz dzięki 100krotne smile.gif Poprawiłem w select - dodałem nazwy kolumn przed nazwą tabeli i wszystko gra.

Tak przy okazji mam pytanko, czy przed każdą kolumną trzeba dawać nazwę tabeli? Czy wysterczy przed tymi gdzie nie mam pewności co do jednoznacznej nazwy kolumny?
Go to the top of the page
+Quote Post
mike
post 6.08.2006, 10:34:15
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(mysql_php @ 6.08.2006, 11:29 ) *
Tak przy okazji mam pytanko, czy przed każdą kolumną trzeba dawać nazwę tabeli? Czy wysterczy przed tymi gdzie nie mam pewności co do jednoznacznej nazwy kolumny?

Wszędzie nie trzeba.
Wtedy kiedy trzeba służy to skonkretyzowaniu zapytania, choć możesz tak zawsze pisać (oczywiście jak wybierasz tylko z jednej tabeli to nie ma sesnu) dla własnej wygody i czytelności.
Możesz wtedy skorzystać z aliasów dla tabel.

Na przykład:
  1. SELECT a.kolumna_1, a.kolumna_2, b.kolumna_1, b.kolumna_3
  2. FROM nazwa_tabeli_1 a, nazwa_tabeli_2 b
  3. WHERE a.kolumna_1 = b.kolumna_1;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 06:47