Weil MySQL Ihre Abfrage ohne Fehler ausgeführt hat. Nur weil Sie die falsche Abfrage geschrieben haben, muss dies nicht bedeuten, dass die Abfrage so falsch ist, dass MySQL sie nicht akzeptiert.
Wenn Sie SQL-Abfragen programmgesteuert generieren, überprüfen Sie (durch Debuggen oder noch besser Komponententests), dass die Abfrage richtig für das erstellt wurde, was Sie tun möchten.
Wenn Sie jedes Mal eine Ausnahme erhalten möchten, wenn ein Fehler auftritt, aktivieren Sie das:
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);