Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Select i Błąd Not unique table/alias
Forum PHP.pl > Forum > Przedszkole
karolzo
Witam! Jestem b. początkujący i proszę o pomoc.
Mam 3 tabele:
[MYSQL] pobierz, plaintext
  1. nazwa: ksiazka
  2. id_ks - klucz główny
  3. tytul
  4. wydawnictwo
  5. aktywna
  6. id_pomocnicze
[MYSQL] pobierz, plaintext

[MYSQL] pobierz, plaintext
  1. nazwa: autor
  2. id_aut- klucz główny
  3. a_imie
  4. a_nazwisko
  5. id_pomocnicze2
[MYSQL] pobierz, plaintext

[MYSQL] pobierz, plaintext
  1. nazwa: autor_ksiazka
  2. id_ks - klucz obcy, wskazuje na id_ks z ksiązki
  3. id_aut - klucz obcy, wskazuje na id_aut z autora
[MYSQL] pobierz, plaintext

Mam klasę:
CODE

  1. public function select($sql) {
  2. if ($this->connection) {
  3. mysql_set_charset('utf8', $this->connection);
  4. if (isset($sql) && $sql != '') {
  5. if($result = mysql_query($sql)) {
  6. return $result;
  7. } else {
  8. $this->error = mysql_error();
  9. return false;
  10. }
  11. } else {
  12. $this->error = 'Błąd zapytania SQL';
  13. return false;
  14. }
  15. } else {
  16. $this->error = 'Brak połączenia z bazą danych';
  17. return false;
  18. }
  19. }


oraz select:
CODE
  1. function select_all($db){
  2. if ($db->connect()):
  3. $sql = "select id_pomocnicze, tytul, wydawnictwo, id_pomocnicze2" .
  4. "a_imie, a_nazwisko from ksiazka inner join autor_ksiazka" .
  5. "on ksiazka.id_ks=autor_ksiazka.id_ks inner join autor on" .
  6. "autor_ksiazka.id_aut=autor.id_aut where aktywna='1';";
  7. if ($results = $db->select($sql)):
  8. $returned = array();
  9. while ($row = mysql_fetch_array($results)):
  10. $returned[] = array(
  11. 'id_pomocnicze' => $row['id_pomocnicze'],
  12. 'tytul' => $row['tytul'],
  13. 'wydawnictwo' => $row['wydawnictwo'],
  14. 'id_pomocnicze2' => $row['id_pomocnicze2'],
  15. 'a_imie' => $row['a_imie'] ,
  16. 'a_nazwisko' => $row['a_nazwisko']
  17. );
  18. endwhile;
  19. return $returned;
  20. else:
  21. echo 'Błąd pobrania danych mysql: ' . $db->error;
  22. return false;
  23. endif;
  24. $db->close();
  25. else:
  26. echo 'Błąd połączenia mysql: ' . $db->error;
  27. return false;
  28. endif;
  29. }
  30. $selected_products = select_all($db);
  31. var_dump($selected_products);


Błąd: Błąd pobrania danych mysql: Not unique table/alias: 'ksiazka'bool(false)
Te zapytanie do bazy na samym Mysqlu jest poprawne i wyświetla wyniki.

mmmmmmm
  1. $sql = "select id_pomocnicze, tytul, wydawnictwo, id_pomocnicze2 " .
  2. "a_imie, a_nazwisko from ksiazka inner join autor_ksiazka " .
  3. "on ksiazka.id_ks=autor_ksiazka.id_ks inner join autor on " .
  4. "autor_ksiazka.id_aut=autor.id_aut where aktywna='1'; ";
karolzo
Prosiłbym jaśniej co jest źle w tym zapytaniu.
mmmmmmm
Dodalem spacje na końcu. inaczej on z tabela się łączył.
karolzo
Dzięki za pomoc. Chciałbym, żeby wyniki były wyświetlone w tabelce a nie w tablicy. Napisałem taki kod, jednak nic się nie wyświetla. Pomoże ktoś wskazać błędy?

CODE
  1. function select_all($db){
  2. if ($db->connect()){
  3. $sql = "select id_pomocnicze, tytul, wydawnictwo, id_pomocnicze2 " .
  4. "a_imie, a_nazwisko from ksiazka inner join autor_ksiazka " .
  5. "on ksiazka.id_ks=autor_ksiazka.id_ks inner join autor on " .
  6. "autor_ksiazka.id_aut=autor.id_aut where aktywna='1'; ";
  7. if ($results = $db->select($sql)){
  8. echo "<table border='1'>
  9. <tr>
  10. <td>id ks</td>
  11. <td>tytul</td>
  12. <td>wyd</td>
  13. <td>id aut</td>
  14. <td>imie</td>
  15. <td>nazwisko</td>
  16. </tr>";
  17. while ($row = mysql_fetch_array($results)){
  18. echo "<tr>";
  19. echo "<td>" . $row['id_pomocnicze'] . "</td>";
  20. echo "<td>" . $row['tytul'] . "</td>";
  21. echo "<td>" . $row['wydawnictwo'] . "</td>";
  22. echo "<td>" . $row['id_pomocnicze2'] . "</td>";
  23. echo "<td>" . $row['a_imie'] . "</td>";
  24. echo "<td>" . $row['a_nazwisko'] . "</td>";
  25. echo "</tr>";
  26. }
  27. echo "</table>";
  28. $db->close();
  29. }
  30. else {
  31. echo 'błąd pobrania' . $db->error;
  32. }
  33. }
  34. else {
  35. echo "brak połączenia";
  36. }
  37. }

Turson
  1. if ($results = $db->select($sql)){

Co to jest $results?
karolzo
  1. if ($results = $db->select($sql)){


Pod zmienną $results podstawiam wynik zapytania $sql i jeżeli nie jest pusty to wykonuje się cała reszta dalej.


Wyświetla mi się pusta strona, tak jakby nie było kodu w ogóle. Myślę, że jest jakiś problem między obiektem klasy db
  1. function select_all($db){

a selectem klasy
  1. public function select($sql) {


Wyjaśniło się, niechcący usunąłem wywołanie. smile.gif
$selected_products = select_all($db);
var_dump($selected_products);
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.