Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziwne zachowanie tworzonego zapytania
Forum PHP.pl > Forum > PHP
Sadamowski
Witam,

Problem z pogranicza PHP i MySQL.... od razu do konkretów:

tworzę zapytanie dla MySQL:

  1. $query = "SELECT * FROM pep_decor
  2. WHERE pg_AA IN ('K','L','*') AND (pg_user = '" . $user . "' OR pg_user = 1) AND pg_active = 1";


to już zwracało mi błąd na bazie danych więc wy-echowałem $query i jako wynik dostaję:

SELECT * FROM pep_decor WHERE pg_AA IN ('K','L','*') AND (pg_user = 'Adam' OR pg_user = 1) AND pg_active = 1SELECT * FROM pep_decor WHERE pg_AA IN ('K','L','*') AND (pg_user = 'Adam' OR pg_user = 1) AND pg_active = 1

czyli jakby podwoił zapytanie..... WTF?questionmark.gif

natomiast jesli wsadzam w instrukcje IN zmienną która wygląda : $deriv="'K','*'";

wtedy zapytanie wygląda następująco:

  1. $query = "SELECT * FROM pep_decor
  2. WHERE pg_AA IN (" . $deriv . ") AND (pg_user = '" . $user . "' OR pg_user = 1) AND pg_active = 1";


to w odpowiedzi na echo dostaję:

'SELECT * FROM pep_decor WHERE pg_AA IN ('K','*') AND (pg_user = 'Adam' OR pg_user = 1) AND pg_active = 1/SELECT * FROM pep_decor WHERE pg_AA IN (/) AND (pg_user = 'Adam' OR pg_user = 1) AND pg_active = 1

skąd wzięły się te slasze... nie wiem co jest grane bo jesli ten IN zastąpię osobnymi warunkami oddzielonymi OR to wszystko jest cacy.

Mózg mi chyba zaraz strzeli...
bedę wdzięczy za jakiekolwiek wskazówki
pedro84
Pokaż więcej kodu.
Sadamowski
no nie za bardzo jest co pokazac bo to poczatek funkcji jest..ale bardzo prosze

  1. function SelectDeco ($deriv,$user,$default=null)
  2. {
  3.  
  4.  
  5.  
  6. $query = "SELECT * FROM pep_decor
  7. WHERE pg_AA IN (" . $deriv . ") AND (pg_user = '" . $user . "' OR pg_user = 1) AND pg_active = 1";
  8.  
  9. echo $query; // tu testowo wyswietla zapytanie
  10.  
  11.  
  12. $result = mysql_query($query) or die( mysql_error() ); // or die ('Server Error');
  13.  
  14.  
  15. $ret ="";
  16.  
  17. while($row = mysql_fetch_assoc($result)) {
  18.  
  19. i tak dalej i tak dalej
  20.  
  21.  
  22.  
  23.  
  24.  
l0ud
Zajmijmy się 1 przypadkiem, gdzie zapytanie jest zdublowane. Zamiast echo $query daj var_dump($query) i wklej co wypisze.
Wydaje mi się, że po prostu funkcję wywołujesz 2 razy, drugi raz gdzieś przypadkowo.
Sadamowski
dzieki lOud za włączenie się do dyskusji:
oto var_dump:

string 'SELECT * FROM pep_decor

WHERE pg_AA IN ('K','*') AND (pg_user = 'Adam' OR pg_user = 1) AND pg_active = 1' (length=117)

string 'SELECT * FROM pep_decor

WHERE pg_AA IN (/) AND (pg_user = 'Adam' OR pg_user = 1) AND pg_active = 1' (length=111)

ciekawe czemu dubluje

cięzko mi uwieżyc, że gdzieś jeszcse wywołuje funkcję bo odpalałem ją z czystego pliku..jakaś paranoiczna sytuacja?questionmark.gifquestionmark.gifquestionmark.gif?


dobra...cos nie tak k...a

na moim netbooku nawet nie piśnie i działa ok...

przeinstaluje PHP'a i zobacze co dalej

l0ud
Profilaktycznie możesz wkleić tutaj cały skrypt, ale skoro działa gdzie indziej, być może to jakiś problem z konfiguracją serwera lub przeglądarki. Spróbuj na innej.
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.