Защото MySQL изпълни вашата заявка без никакви грешки. Само защото сте написали грешна заявка, това не трябва да означава, че заявката е толкова грешна, че MySQL няма да я приеме.
Всеки път, когато генерирате SQL заявки програмно, проверете (чрез отстраняване на грешки или дори по-добри модулни тестове), че заявката е създадена точно за това, което искате да направите.
Ако искате да получавате изключение всеки път, когато възникне грешка, активирайте това:
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);