Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Incorrect arguments to mysql_stmt_execute, Działa na windzie, nie chce na linuxie FreeBSD
mxm
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 9.06.2005

Ostrzeżenie: (0%)
-----


Od jakiegoś czasu szukam na necie rozwiązania w związku z błędem zapytania MySQL, który pojawił się w moim skrypcie. Do połączenia z bazą mysql wykorzystuje bibliotekę PDO. Baza jest postawiona na silniku InnoDB. Mam zapytanie predefiniowane wykonywane poleceniem bindValue.
Przykładowe zapytanie to:
  1. SELECT * FROM tab1
  2. LEFT JOIN tab2
  3. USING (ID)
  4. WHERE tab1.temat LIKE :q OR tab1.temat2 LIKE :q OR tab1.klucz LIKE :q OR tab1.opis LIKE :q

Oczywiście pod ':q' podczepione jest:
  1. bindValue(":q", "%{$q}%", PDO::PARAM_STR)

Teraz najlepsze. Zapytanie na mojej bazie MySQL postawionej na Windowsie (wersja mysql: 5.0.51a-community-nt) wykonywane jest PRAWIDŁOWO. Natomiast to samo zapytanie wykonywane na na linuxie FreeBSD (wersja mysql: 5.0.9-beta) pokazuje błąd:
  1. SQLSTATE[HY000]: General error: 1210 Incorrect arguments to mysql_stmt_execute

Co ciekawe jeśli zmniejszę ilość warunków, czyli zapytanie jest w postaci np.:
  1. SELECT * FROM tab1
  2. LEFT JOIN tab2
  3. USING ( ID )
  4. WHERE tab1.klucz LIKE :q OR tab1.temat2 LIKE :q

wszystko wykonywane jest prawidłowo. Ciekawe prawda?

Jeśli całe zapytanie z wszystkimi warunkami przetworze bezpośrednio w phpmyadminie, ale bez zapytania predefionowanego to też wszystko jest ok.

Tak więc pytanie czym ten błąd jest spowodowany i dlaczego tak ograniczane jest to zapytanie predefiniowane przez bazę?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 17:14