Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Błędne zapytanie w bazie mysql
Forum PHP.pl > Forum > Przedszkole
szczalpi
Witam wszystkich.
Mam problem z zapytaniem w bazie mysql. Nie wiem dlaczego pobiera id takie samo dla wszystkich rekordów tj 5. Skrypt pobiera tytul, zdjecie i id, aby stworzyć link. Do wszystkich pięciu zdjęć przepisuje to samo id, ale zmienia się tytul, co powoduje niezgodny link. Skrypt działa na zasadzie slidu. Zapytanie jest zrobione, aby pominąć RAND BY. Niestety nie wiem, w którum miejscu tkwi błąd.
Proszę o pomoc.

  1. <?
  2.  
  3. $sql="SELECT * FROM users AS r1
  4. JOIN (SELECT ROUND(
  5. RAND( ) * (
  6. SELECT MAX( id ) FROM users)
  7. ) AS id
  8. ) AS r2
  9. WHERE r1.id >= r2.id
  10. LIMIT 5";
  11. $result=mysql_query($sql);
  12.  
  13. while ($row = mysql_fetch_array($result))
  14. {
  15. ?>
  16. <? $str=''.$row['id'].'_'.$row['nazwa_obiektu'].'';?>
  17. <a href=<? echo '"'.tytul_ogl($str).',noclegi.html"';?> class="show">
  18. <img src="users_fotos/<? echo $row['photo_1']; ?>" width="580" height="360" title="" alt="" rel="<? echo $row['nazwa_obiektu']; ?>"/>
  19. </a>
  20. <?
  21. }
  22.  
  23. ################################################################################
  24. ?>
mmmmmmm
Błąd tkwi w *.
NIGDY, PRZENIGDY nie używaj * - chyba że do Counta. Wypisz tylko te pola, które potrzebujesz.
Zastosowałeś gwiazdkę, czy MySQL przyjął, że bierzesz r1.*, r2.*, a to jest równoznaczne z r1.id, r1.nazwa_obiektu, r1.photo_1, ..., r2.id. Więc masz dwa pola id - jedno z r1, a jedno z r2. Z kolei PHP jest tak głupi, że do tablicy asocjacyjnej w przypadku napotkania dwóch pól o tej samej nazwie, wpisuje wartość z OSTATNIO napotkanej wartości. Dlatego ta 5, to jest z r2.id
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.