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 #183523 is a reply to message #183519] Tue, 29 October 2013 22:11 Go to previous messageGo to previous message
Thomas Mlynarczyk is currently offline  Thomas Mlynarczyk
Messages: 131
Registered: September 2010
Karma:
Senior Member
Jerry Stuckle schrieb:

> Do you get a result from the 'Select 5 + "Five"'? If so, what is it?

Yes, I get a result -- see below. I did some more testing:

$pdo = new PDO( 'mysql:...', '...', '...' );
var_dump( $pdo->setAttribute( PDO::ATTR_EMULATE_PREPARES, false ) );
var_dump( $stmt = $pdo->prepare( 'SELECT 5 + "Five"' ) );
var_dump( $stmt->execute() );
var_dump( $stmt->fetchAll( PDO::FETCH_ASSOC ) );
var_dump( $pdo->query( 'SHOW WARNINGS' )
->fetchAll( PDO::FETCH_ASSOC ) );

Return values with PDO::ATTR_EMULATE_PREPARES = false:
setAttribute -> true
prepare -> PDOStatement
execute -> true
fetchAll -> array( '5 + "Five"' => (float) 5 )
SHOW WARNINGS -> (empty array)

Return values with PDO::ATTR_EMULATE_PREPARES = true:
setAttribute -> true
prepare -> PDOStatement
execute -> true
fetchAll -> array( '5 + "Five"' => (string) '5' )
SHOW WARNINGS -> array with warning

Results are the same with PHP 5.4.8 and PHP 5.4.21. Note the different
return types of the value 5 -- float vs. string. This surprises me a
little -- why would the setting for emulation of prepared statements
influence the *returned* data?

> Also, what happens if you try "Select 5 + 'Five'"? (note different
> quoting).

No change.

> I'm beginning to think you've found a bug in the PDO extension, but I'm
> not sure (yet).

Hm. I tested with PHP 5.4.8 and 5.4.21 and it didn't work. But it
obviously worked with PHP 5.4.15 as both Thomas Lahn's and my own test
on a different server have shown. In both cases, MySQL 5.5 is involved
whereas my local system is still on MySQL 5.1.41. This leads me to think
that it's not (or at least not entirely) a PDO issue.

Greetings,
Thomas

--
Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!
(Coluche)
[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: Thu Sep 19 17:12:40 GMT 2024

Total time taken to generate the page: 0.06057 seconds