Re: PDO - Cannot retrieve warnings with emulated prepares disabled [message #183522 is a reply to message #183519] |
Tue, 29 October 2013 20:50 |
Thomas 'PointedEars'
Messages: 701 Registered: October 2010
Karma:
|
Senior Member |
|
|
Jerry Stuckle wrote:
> On 10/29/2013 11:22 AM, Thomas Mlynarczyk wrote:
>> Jerry Stuckle schrieb:
>>> I could be wrong, but from my experience, the mysql driver has never
>>> supported prepared statements, while the mysqli driver has always
>>> supported them. This is why PDO has to emulate the prepared statements.
AISB, that is utter nonsense. “mysql”, “mysqli”, and “pdo_mysql” (the PDO
driver for MySQL) are *different* drivers (for the *same* *third-party*
client library) and have no dependency on each other whatsoever.
Also, while the “mysql” extension does not provide a *convenience API* for
Prepared Statements (PS), and it is recommended not to use the “mysql”
extension at all, you *can* still use PSs with it; they are, after all, part
of the MySQL statement syntax:
$ php -r '
mysql_connect("localhost", "…", "…");
mysql_query("PREPARE stmt1 FROM \"SELECT SQRT(POW(?,2) + POW(?,2)) AS
hypotenuse\";");
mysql_query("SET @a = 3;");
mysql_query("SET @b = 4;");
$result = mysql_query("EXECUTE stmt1 USING @a, @b;");
var_dump(mysql_fetch_array($result));'
array(2) {
[0] =>
string(1) "5"
'hypotenuse' =>
string(1) "5"
}
(Example from
<http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html>)
>> This is what PDO tells me about the driver being used:
>> PDO::ATTR_CLIENT_VERSION => mysqlnd 5.0.10 - 20111026
>
> Ok, so you're using MySQL's driver for PHP 5.4+. That's good; it
> supports everything.
You have it backwards and utterly wrong on top of that. He is _not_ using
“MySQL's driver for PHP 5.4+”. He is using PDO_MySQL – a PDO driver for
MySQL – that accesses a MySQL client library on his system (that has nothing
to do with PHP) of version 5.0.10. PDO and PDO_MySQL are available since
PHP 5.0.
Do you understand the difference?
And if he is using that older client library to access a MySQL 5._1_ server,
it is _not_ good. (Even though prepared statements should not be an issue
then – they are supported since MySQL 4.1 –, but in my experience a MySQL
version mismatch tends to cause problems.)
PointedEars
--
Use any version of Microsoft Frontpage to create your site.
(This won't prevent people from viewing your source, but no one
will want to steal it.)
-- from <http://www.vortex-webdesign.com/help/hidesource.htm> (404-comp.)
|
|
|