jemand eine Idee, warum dies geschehen würde weirderfetchAll() gibt leeres Array, Looping mit fetch() bekommt alle Ergebnisse
$stmt = $this->prepare($this->sql);
$exec = $stmt->execute($this->bindings);
// The below returns an empty array()
return $exec->fetchAll(PDO::FETCH_OBJ);
// This however will return rows if looped.
return $exec->fetch(PDO::FETCH_OBJ);
Selbst ist, dass dies nur mit bestimmten ID-Bereiche in unserer Datenbank geschieht, für Beispiel wenn Sie nach verschiedenen Informationen über ein Element mit der Produkt-ID 552 suchen, funktioniert der obige Code mit fetchAll() kein Problem, aber ändern Sie das zu 553 und es schlägt fehl (leeres Array). 554 funktioniert dann wieder. Es gibt praktisch keinen Unterschied in den Daten innerhalb des DB zwischen den Elementen (es sind nur ganze Zahlen und Zeitstempel [Geolokationsdaten]).
fügen Sie einige Debugging: Überprüfen Sie die rowcount für Ihre $ stmt, nachdem es ausgeführt wird. Wenn es einen Fehler gegeben hat, gibt fetch/fetchall boolean false zurück. Wenn es keine Ergebnisse gibt (aber ein gültiges Ergebnishandle), erhalten Sie ein leeres Array. also wahrscheinlich fetch/fetchall arbeitet FINE, und es ist die Abfrage, die irgendwie nichts findet. –
rowCount gibt 23 zurück, columnCount gibt 2 zurück. Weder fetch noch fetchAll geben false zurück. Das Ausführen des rohen SQL-Befehls (emuliert von dem vorbereiteten STMT) funktioniert in der Befehlszeile gut. – varbrad
Ah, hat unseren Server neu gestartet und MySQL gestoppt und neu gestartet und es funktioniert jetzt. Sonderausgabe. – varbrad