Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zapytanie w zmiennej
Forum PHP.pl > Forum > Przedszkole
DeN_
witam, spotkałem się dziś z poważnym problemem. Posiadam zapytanie Sql w zmiennej, kiedy próbuje połączyć się w sposób pokazany poniżej wyskakuje błąd:
  1. $sql = $zapytanie3;
  2. $rs = $mysqli->query($sql);
  3.  
  4. if($rs === false) {
  5. trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $mysqli->error, E_USER_ERROR);
  6. }
  7. else {
  8. $rows_returned = $rs->num_rows;
  9. }
  10. $rs->data_seek(0);

natomiast gdy wyświetlę zmienną za pomocą echa i skopiuje to co się wyświetliło do zawartości zmiennej $sql wszystko działa tak jak powinno. Gdzie mam szukać przyczyny ?
Turson
Pokaż więcej kodu, z zapytaniem
DeN_
  1. if (isset($_SESSION['zapytanie3'])){ $sql=''.$_SESSION['zapytanie3'].'';
  2. }
  3. else{
  4. $sql="SELECT SUM(zuzycie) FROM dokladne_zuzycie WHERE uzytkownik = '".$_SESSION['id']."' and zrodlo ='".$_SESSION['source']."' and (czas='22' or czas='23'
  5. or czas='24' or czas='1' or czas='2' or czas='3' or czas='4' or czas='5' or czas='13' or czas='14') ";
  6. }
  7. $rs=$mysqli->query($sql);
  8.  
  9. if($rs === false) {
  10. trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $mysqli->error, E_USER_ERROR);
  11. }
  12. else {
  13.  
  14.  
  15. $rows_returned = $rs->num_rows;
  16. }
  17. $rs->data_seek(0);
  18.  



Zapytanie, której jest w innym pliku tworzone z dwóch tablic i zmienione w stringa implode'm a następnie przekazane do sesji wygląda tak:
  1. SELECT SUM(zuzycie) FROM dokladne_zuzycie WHERE uzytkownik =" 1" AND zrodlo ="Ab2" AND DATA = "2014-01-03" AND czas IN("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24") OR DATA = "2014-01-04" AND czas IN("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24")

Turson
No dobra, ale jaki ten błąd wywala bo nie napisałeś
DeN_

  1. Fatal error: Wrong SQL: select SUM(zuzycie) from dokladne_zuzycie WHERE uzytkownik =" 1" and zrodlo ="Ab2" and data = "2014-01-03" and czas in("6","7","8","9","10","11","12","14","15","16","17","18","19","20","21") or data = "2014-01-04" and czas in("6","7","8","9","10","11","12","14","15","16","17","18","19","20","21") in C:\WebServ\httpd\Praca_T\oszczednosci.php on line 115
  2.  

Wpisałem kod do PHPmyAdmin i tam też działa.
nospor
W komuniakcie bledu powinno byc to:
Error: ' . $mysqli->error
jednak nigdzie nie widze w tym komunikacie co pokazales.... czary?
DeN_
Dziwna sytuacja, wpisałem kod ręcznie, celowo zrobiłem literówkę i wyświetliło to o czym piszesz ale jak wpiszę zmienną to wyświetla tylko to co przedstawiłem.
nospor
Cos mieszasz.... kod co tu nam pokazales zawiera inne zapytanie niz na twoim rzekomym bledzie. Lepiej poprsawnie zlokalizuj ktory to kod
DeN_
Zapytanie jest inne bo zmieniłem dane wejściowe, ogólnie to dostaje dane wejściowe z posta w formie tablicy, później łącze je w stringa i powstaje zmienna która ma być zapytaniem, bez względu na dane wejściowe zawsze jest ten sam problem.
_Borys_
Skoro z formularza pobierasz to może masz niechciane znaki, spacje, znaki nowej linii itd.
Oczyść dane z formularza funkcją trim() lub podobne i potem łącz w stringa.
DeN_
Cytat(_Borys_ @ 29.01.2014, 23:02:59 ) *
Skoro z formularza pobierasz to może masz niechciane znaki, spacje, znaki nowej linii itd.
Oczyść dane z formularza funkcją trim() lub podobne i potem łącz w stringa.

Wlekie, wielkie dzięki z tym właśnie był problem smile.gif
phpion
Zapytanie może i działa, ale czy zwraca prawidłowe wyniki? W warunkach masz OR - czy przypadkiem nie brakuje Ci nawiasów? cos AND cos OR cos AND cos to co innego niż (cos AND cos) OR (cos AND cos).
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.