Karena MySQL mengeksekusi kueri Anda tanpa kesalahan. Hanya karena Anda telah menulis kueri yang salah, ini tidak berarti bahwa kueri tersebut salah sehingga MySQL tidak akan menerimanya.
Setiap kali Anda membuat kueri SQL secara terprogram, verifikasi (dengan men-debug atau bahkan pengujian unit yang lebih baik), bahwa kueri telah dibuat tepat untuk apa yang ingin Anda lakukan.
Jika Anda ingin mendapatkan pengecualian setiap kali terjadi kesalahan, aktifkan:
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);