ID: 38520 Updated by: [EMAIL PROTECTED] Reported By: selecter at gmail dot com -Status: Open +Status: Closed Bug Type: Reproducible crash Operating System: Linux Gentoo 2006.0 PHP Version: 5.1.4 New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2006-08-20 17:00:49] selecter at gmail dot com Worked fine on latest snapshot. ------------------------------------------------------------------------ [2006-08-20 14:45:54] [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 ------------------------------------------------------------------------ [2006-08-20 14:42:53] selecter at gmail dot com No crash if to delete bindParam lines and pass $prefs to execute() if(($num=$st->execute($prefs)) === FALSE){ But: "Fatal error: : in /var/www/localhost/htdocs/crash.php on line 23" which gives me no idea what was wrong in my query. ------------------------------------------------------------------------ [2006-08-20 14:40:25] selecter at gmail dot com Sorry... This is more likely you want: <?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' => 0, 'show_smiles' => 1, 'timezone_offset' => 0, 'messages_on_page' => 5 ); $st = $db->prepare("UPDATE preferences 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); $st->bindParam(5, 6, 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-20 14:34:28] selecter at gmail dot com Here's the code that crashes: <?php try{ $dsn = 'mysql:host=localhost;dbname=test'; $db = new PDO($dsn, 'root', 'pass', array(PDO_ATTR_PERSISTENT => 1)); }catch(PDOException $e){ trigger_error($e->getMessage(), E_USER_ERROR); } $prefs = array( 'show_email' => 0, 'show_smiles' => 1, 'timezone_offset' => 0, 'messages_on_page' => 5 ); $st = $db->prepare("UPDATE preferences 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); $st->bindParam(5, 6, PDO::PARAM_INT); if(($num=$st->execute()) === FALSE){ $einfo = $ptr->errorInfo(); $einfo = $ptr->errorCode.': '.$einfo[2]; ?><pre><?php debug_print_backtrace(); ?></pre><?php trigger_error($einfo, E_USER_ERROR); }else{ $this->session->cacheUserPrefs($prefs); } ?> ------------------------------------------------------------------------ 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/38520 -- Edit this bug report at http://bugs.php.net/?id=38520&edit=1