क्योंकि MySQL ने आपकी क्वेरी को बिना किसी त्रुटि के निष्पादित किया। केवल इसलिए कि आपने गलत क्वेरी लिखी है इसका मतलब यह नहीं होना चाहिए कि क्वेरी इतनी गलत है कि MySQL इसे स्वीकार नहीं करेगा।
जब भी आप प्रोग्रामेटिक रूप से SQL क्वेरी जेनरेट करते हैं, तो सत्यापित करें (डिबगिंग या इससे भी बेहतर यूनिट-टेस्ट द्वारा), कि क्वेरी को आप जो करना चाहते हैं उसके लिए सही बनाया गया है।
यदि आप हर बार कोई त्रुटि होने पर अपवाद प्राप्त करना चाहते हैं, तो उसे सक्षम करें:
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);