Jeg vil vove at sige, at det er en fejl. Jeg fandt to relevante billetter:
- Bug #63812 :PDO udløser advarsler uanset fejlhåndteringsstrategi, indgivet i 2012 for PHP/5.3.19
- Bug #74401 :Advarsel om PDO-udløser allerede indstillet throw-undtagelse, indgivet i 2017 for PHP/7.0.17
Under alle omstændigheder er de stadig åbne, og det er ikke helt klart, om de er gyldige problemer (selvom jeg formoder, at de er det). Det ser ikke ud til at være en designbeslutning, fordi andre MySQL-fejl ikke udløser både advarsel og undtagelse:
$connection = new PDO('mysql:host=127.0.0.1;dbname=test', 'test', 'test',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING]);
$connection->query('SELECT * FROM foo');
$connection = new PDO('mysql:host=127.0.0.1;dbname=test', 'test', 'test',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$connection->query('SELECT * FROM foo');