|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2006-08-22 15:00 UTC] selecter at gmail dot com
Description:
------------
The code below leads to unclear error Fatal error: : in /var/www/localhost/htdocs/crash.php on line 33
But if I pass int values instead of bool, this code works fine.
Instead of:
'show_email' => (bool) 1,
'show_smiles' => (bool) 1,
Write:
'show_email' => 1,
'show_smiles' => 1,
I noticed that because I get those values like this:
'show_email' => CheckBox::isOn('show_email'),
'show_smiles' => CheckBox::isOn('show_smiles'),
which return bool values...
Reproduce 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
);
$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);
$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';
}
?>
PatchesPull Requests
Pull requests:
HistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 20:00:01 2025 UTC |
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'; } ?>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.Suggestion for workaround (works with PHP 5.1.6 and MySql 4.1.1): $tmp = (int) $this->getDue_Date_IsWeek(); $stmt->bindParam(':Due_Date_IsWeek' , $tmp , PDO::PARAM_BOOL );