qwant1
20.01.2015, 07:43:05
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.
<?php
$result = mysqli_query
($dbc,"SELECT * FROM variables21 WHERE name LIKE 'lvl.%'ORDER BY value DESC LIMIT 100") or
die("Bład w zapytaniu!"); while($row = mysqli_fetch_array($result))
{
$klasa = "$row["type"]";
$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 }
while($row2 = mysqli_fetch_array($result2))
{
}
mysqli_close($dbc);
?>
nospor
20.01.2015, 07:45:57
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
20.01.2015, 07:52:37
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
20.01.2015, 08:32:18
SELECT * FROM variables21 WHERE name IN (SELECT type FROM variables21 WHERE name LIKE 'lvl.%' ORDER BY value DESC LIMIT 100)
qwant1
20.01.2015, 10:53:19
A co ta odpowiedź wnosi do mojego pytania ?
Pyton_000
20.01.2015, 10:58:19
Wnosi to że zamiast 2 zapytań masz jedno.
qwant1
20.01.2015, 11:21:07
Wyskakuje mi błąd w zapytaniu !
nospor
20.01.2015, 11:30:41
Zamiast sie wykrzyknikowac, to pokaz łaskawie jak to wstawiles do swojego kodu i jaki konkretnie błąd. Nie zachowuj się jak małe dziecko
qwant1
20.01.2015, 11:37:28
Ten wykrzyknik to nie moje zdenerwowanie tylko taką zwraca warttość.
$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
20.01.2015, 11:40:51
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
aniolekx
20.01.2015, 13:16:22
@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
20.01.2015, 13:41:48
@aniolekx To może jednak coś podpowiesz? bo ja jednak chyba mało kumaty jestem
aniolekx
20.01.2015, 13:58:32
brakuje nawiasu przed cudzysłowem, na końcu zapytania SQL
qwant1
20.01.2015, 14:00:56
Czyli linijka powinna wyglądać tak
$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
20.01.2015, 14:02:35
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
20.01.2015, 14:07:04
qwant1
20.01.2015, 14:09:14
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
20.01.2015, 14:11:53
Popraw sobie końcówkę kodu na:
or
die("Bład w zapytaniu!" . mysqli_error
($dbc));
qwant1
20.01.2015, 14:21:45
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
20.01.2015, 14:54:52
to moze tak:
SELECT * FROM variables21 JOIN (SELECT type FROM variables21 WHERE name LIKE 'lvl.%' ORDER BY value DESC LIMIT 100) t ON name = t.type
qwant1
20.01.2015, 16:01:41
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.