Przykładowe zapytanie to:
SELECT * FROM tab1 LEFT JOIN tab2 USING (ID) 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:
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:
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.:
SELECT * FROM tab1 LEFT JOIN tab2 USING ( ID ) 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ę?