ID:               38546
 Updated by:       [EMAIL PROTECTED]
 Reported By:      selecter at gmail dot com
-Status:           Open
+Status:           Assigned
 Bug Type:         PDO related
 Operating System: Gentoo Linux x86_64
 PHP Version:      latest snapshot
-Assigned To:      
+Assigned To:      wez
 New Comment:

First of all, there is no crash.
Fatal error is the result of your trigger_error() call.
PDOStatement::execute() fails because MySQL API doesn't support boolean
parameters (though they can be "emulated" through PDO).

I'm leaving this to the maintainer to decide.


Previous Comments:
------------------------------------------------------------------------

[2006-08-22 16:42:10] selecter at gmail dot com

That's what you get: Fatal error: :  in /tmp/1.php on line 66
That's all that matters...

Instead of:
'show_email' => (bool) 1,
'show_smiles' => (bool) 1,

Write:
'show_email' => 1,
'show_smiles' => 1,

and the query will be executed successfully.

------------------------------------------------------------------------

[2006-08-22 16:29:14] [EMAIL PROTECTED]

I get:
---
array(1) {
  [0]=>
  string(5) "00000"
}

Notice: Undefined property:  PDO::$errorCode in /tmp/1.php on line 62

Notice: Undefined offset:  2 in /tmp/1.php on line 62
<pre></pre>
Fatal error: :  in /tmp/1.php on line 66
---

No crashes. valgrind doesn't show anything wrong there.

------------------------------------------------------------------------

[2006-08-22 15:54:30] selecter at gmail dot com

Still reproducable. Here's the code:
<?php
try{

    $dsn = 'mysql:host=localhost;dbname=test';

    $db = new PDO($dsn, 'root', 'pass');

}catch(PDOException $e){

        trigger_error($e->getMessage(), E_USER_ERROR);

}

$prefs = array(

        'show_email' => (bool) 1,

        'show_smiles' => (bool) 1,

        'timezone_offset' => 0,

        'messages_on_page' => 5,
        'uid', 6

);

                $query = "CREATE TABLE prefs(

                uid MEDIUMINT UNSIGNED NOT NULL,

            show_email BOOL NOT NULL,

            show_smiles BOOL NOT NULL,

            timezone_offset TINYINT NOT NULL,

            messages_on_page TINYINT UNSIGNED NOT NULL

            )";
                $query = "INSERT INTO prefs VALUES(6, 1, 1, 0, 5)";

            $db->exec($query);

                $st = $db->prepare("UPDATE prefs SET show_email=?, 
show_smiles=?,
timezone_offset=?, messages_on_page=? WHERE uid=?");

                $st->bindParam(1, $prefs['show_email'], PDO::PARAM_BOOL);

        $st->bindParam(2, $prefs['show_smiles'], PDO::PARAM_BOOL);

        $st->bindParam(3, $prefs['timezone_offset'], PDO::PARAM_INT);

        $st->bindParam(4, $prefs['messages_on_page'], PDO::PARAM_INT);
                        $id = 6;
        $st->bindParam(5, $id, PDO::PARAM_INT);         
        if(($num=$st->execute()) === FALSE){

        $einfo = $db->errorInfo();

        $einfo = $db->errorCode.': '.$einfo[2];
                        ?><pre><?php        
        debug_print_backtrace();
        ?></pre><?php      
        trigger_error($einfo, E_USER_ERROR);
        }else{

                echo 'ok';

        }
?>

------------------------------------------------------------------------

[2006-08-22 15:13:16] [EMAIL PROTECTED]

If you're still able to reproduce it with the latest 5.2 snapshot
(several changes were applied yesterday), please provide SHORT and
COMPLETE reproduce script ("complete" means no missing tables, no
missing variables etc.).
A gdb backtrace would be also helpful.

------------------------------------------------------------------------

[2006-08-22 15:11:32] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.2-win32-latest.zip



------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/38546

-- 
Edit this bug report at http://bugs.php.net/?id=38546&edit=1

Reply via email to