PDO używające sterowników ODBC raczy nas od czasu do czasu wszystkomówiącymi komunikatami “SQLSTATE[HY010]: Function sequence error: 0″.
Z doświadczenia wiem, że ma to miejsce przynajmniej w kilku (jak nie kilkunastu) przypadkach. Będę je tu wypisywał w miarę, jak będą mi dokuczać
1. Niby prosta sprawa:
$stmt = $pdo->prepare('SELECT * FROM tabela WHERE kol = :kol');
$params = array('kol'=> $kol);
$stmt->execute($params);
Ostatni wiersz powoduje błąd. kol jest integer. Co ciekawe, na innym komputerze, wszystko działa. Profiler pokazuje 1, zamiast spodziewanej wartości.
Zastąpienie $kol, wartością z palca, np.: 1234, powoduje, że błąd znika.
Rozwiązanie: tu sprawa jest prosta, prawdopodobnie, $kol nie przekazuje integer (np.: 1234.0 zamiast 1234) aby to sprawdzić, trzeba rozwiązać problem typu $kol. Można to sprawdzić rzutując (int)$kol – błąd zniknie – wszystko jasne. Błąd nie znika? Jaki błąd??
Tagi: function sequence error, pdo, SQLSTATE