Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem
Forum PHP.pl > Forum > Przedszkole
qwant1
Witam,

Nie moge poradzić sobię z budową zapytania do mysql a mianowicie tworzę zapytanie wynik otrzymuje w postaci tablicy, ale zarazm chcę aby te wyniki z tablicy stanowiły zmienną do kolejnego zapytania do bazy danych.
Może ma ktoś jakiś pomysł

To część kodu.


  1. <?php
  2.  
  3.  
  4. $result = mysqli_query($dbc,"SELECT * FROM variables21 WHERE name LIKE 'lvl.%'ORDER BY value DESC LIMIT 100") or die("Bład w zapytaniu!");
  5. while($row = mysqli_fetch_array($result))
  6. {
  7.  
  8. $klasa = "$row["type"]";
  9.  
  10.  
  11. $result2 = mysqli_query($dbc,"SELECT * FROM variables21 WHERE name='$klasa'") or die("Bład w zapytaniu!"); // chcę żeby te dane z pierwszej tablicy posłużyły jako zmienna w tym kolejnym zapytaniu
  12. }
  13. while($row2 = mysqli_fetch_array($result2))
  14. {
  15. echo $row2["type"];
  16.  
  17. }
  18.  
  19.  
  20. mysqli_close($dbc);
  21. ?>
  22.  
nospor
Na chwile obecną to ty lezysz na php a nie mysql.... przenosze.

nie: $klasa = "$row["type"]";
a: $klasa = $row["type"];
To są podstawy php
qwant1
Tak oczywiście zaczynam się w to bawić to prawda.

Głównie chodzi mi o te drugie zapytanie żeby korzystało z wyników pierwszej tablicy.
aniolekx
  1. SELECT * FROM variables21 WHERE name IN (SELECT type FROM variables21 WHERE name LIKE 'lvl.%' ORDER BY value DESC LIMIT 100)
qwant1
A co ta odpowiedź wnosi do mojego pytania ?
Pyton_000
Wnosi to że zamiast 2 zapytań masz jedno.
qwant1
Wyskakuje mi błąd w zapytaniu !
nospor
Zamiast sie wykrzyknikowac, to pokaz łaskawie jak to wstawiles do swojego kodu i jaki konkretnie błąd. Nie zachowuj się jak małe dziecko tongue.gif
qwant1

Ten wykrzyknik to nie moje zdenerwowanie tylko taką zwraca warttość.


  1. $result = mysqli_query($dbc,"SELECT * FROM variables21 WHERE name IN (SELECT type FROM variables21 WHERE name LIKE 'lvl.%' ORDER BY value DESC LIMIT 100") or die("Bład w zapytaniu!");
nospor
To zamiast nic nie mowiacego "Bład w zapytaniu!" wyswietl sobie błąd zapytania. W manualu php przy mysqli masz napisane jak sie pobiera błąd aktualnie wykonywanego zapytania.

ps: A na przyszlosc uzywaj cudzysłowi gdy cytujesz jakis tekst wink.gif
aniolekx
@qwant1, nic nie poradzę na to ze nie umiesz zrobić copy/paste jednej linijki kodu... Sprawdź dokładnie co ja podałem z co ty podałeś.

Mala podpowiedz, chodzi o samo zapytanie SQL
qwant1
@aniolekx To może jednak coś podpowiesz? bo ja jednak chyba mało kumaty jestem
aniolekx
brakuje nawiasu przed cudzysłowem, na końcu zapytania SQL
qwant1
Czyli linijka powinna wyglądać tak

  1. $result = mysqli_query($dbc,"SELECT * FROM variables21 WHERE name IN (SELECT type FROM variables21 WHERE name LIKE 'lvl.%' ORDER BY value DESC LIMIT 100)") or die("Bład w zapytaniu!");


Ale nadal błąd w zapytaniu wyskakuje
nospor
Mowilem ci... wyswietl sobie blad zapytania a nie durny tekst a bedziesz wiedzial jaki baza zwraca ci blad... Naprawde przez tyle godzin nie mozna bylo tego zrobic?
aniolekx
tutaj mala podpowiedz: http://php.net/manual/en/mysqli.error.php
qwant1
Przeczytałem uważnie twoją odpowiedź dzięki bardzo w pracy jestem i cały czas się tym nie zajmuję.

Jak już się tak udzielasz za co z góry dziękuję to podaj mi ten kod na sprawdzenie tego zapytania.
Jestem początkujący i szukam pomocy.
adamt87
Popraw sobie końcówkę kodu na:

  1. or die("Bład w zapytaniu!" . mysqli_error($dbc));
qwant1
Dziękuję za pomoc @adamt87

Wyskoczył mi błąd "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'"

Czyli wykasowałem warunek LIMIT 100 ale takie zapytanie będzie trwało z godzinę bo baza ma 400 tyś rekordów
aniolekx
to moze tak:

  1. SELECT * FROM variables21 JOIN (SELECT type FROM variables21 WHERE name LIKE 'lvl.%' ORDER BY value DESC LIMIT 100) t ON name = t.type
qwant1
Brak danych do wyświetlenia po tym zapytaniu
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.