Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why PDO generates warnings when we tell it not to do it?

Tags:

php

pdo

mysqlnd

Problem

We tell PDO to wrap each issue into exception. In some cases it generates a few warnings and only then throws exception.

Why does it do it?

Duplicates?

There were no correct answers on SO regarding it. Last question was PHP PDO Exception + Warning on MySQL Has Gone Away? but people just marked it as duplicate instead of carefully answer.

Accepted answer not answers why does it do it and when. So I researched and will answer.

like image 724
gaRex Avatar asked Oct 18 '22 15:10

gaRex


1 Answers

It's because of PDO could use mysqlnd driver, which not respects any of PDO's "convert-issues-to-extensions" policy.

Just look at sources of mysqlnd driver.

We clearly see there direct calls to php_error_docref.

And one of examples, shown at previous question explained by these lines: https://github.com/php/php-src/blob/PHP-5.5.31/ext/mysqlnd/mysqlnd_wireprotocol.c#L35:L61

like image 119
gaRex Avatar answered Oct 27 '22 00:10

gaRex