FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » PDO - Cannot retrieve warnings with emulated prepares disabled
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: PDO - Cannot retrieve warnings with emulated prepares disabled [message #183522 is a reply to message #183519] Tue, 29 October 2013 20:50 Go to previous messageGo to previous message
Thomas 'PointedEars'  is currently offline  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.)
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: splitting list into columns
Next Topic: reading files with accents in the filename from PHP
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Tue Nov 26 14:53:09 GMT 2024

Total time taken to generate the page: 0.06292 seconds