Ik zou durven zeggen dat het een bug is. Ik heb twee relevante tickets gevonden:
- Bug #63812 :PDO activeert waarschuwing(en) ongeacht de foutafhandelingsstrategie, ingediend op 2012 voor PHP/5.3.19
- Bug #74401 :PDO-triggerwaarschuwing heeft al een worpuitzondering ingesteld, ingediend in 2017 voor PHP/7.0.17
Ze zijn in ieder geval nog steeds open en het is niet helemaal duidelijk of het geldige problemen zijn (hoewel ik vermoed van wel). Het lijkt geen ontwerpbeslissing te zijn omdat andere MySQL-fouten niet beide triggeren, waarschuwing en uitzondering:
$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');