2010-09-06 65 views
2

我在MYSQL下表定义MYSQL PDO返回类型陌生转换

CREATE TABLE IF NOT EXISTS `test_cases` (
    `id` int(10) unsigned NOT NULL auto_increment, 
    `exercise_id` int(10) unsigned NOT NULL, 
    `author_id` int(10) unsigned NOT NULL, 
    `input_1_value` varchar(255) default NULL, 
    `input_2_value` varchar(255) default NULL, 
    `input_3_value` varchar(255) default NULL, 
    `input_4_value` varchar(255) default NULL, 
    `input_5_value` varchar(255) default NULL, 
    `output_value` varchar(255) default NULL, 
    PRIMARY KEY (`id`), 
    KEY `test_cases_ibfk_1` (`exercise_id`), 
    KEY `author_id` (`author_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3218 ; 

我有以下进入此表

INSERT INTO `test_cases` (`id`, `exercise_id`, `author_id`, `input_1_value`, `input_2_value`, `input_3_value`, `input_4_value`, `input_5_value`, `output_value`) VALUES 
(560, 145, 496, '0', NULL, NULL, NULL, NULL, '0') 

我有以下查询,从得到上面的一行表

SELECT id, exercise_id, author_id, input_1_value, input_2_value, input_3_value, input_4_value, input_5_value, output_value FROM test_cases WHERE exercise_id=145 

我对中的值感兴趣并存在问题。在phpMyAdmin中运行查询将返回值为'0',这是预期的。然而运行下面的php脚本会返回值为'true',这是完全留下的字段,让我和我的项目主管难住。 PHP脚本低于...

$db = DBCxn::getCxn();  
$sql = "SELECT id, exercise_id, author_id, input_1_value, input_2_value, input_3_value, input_4_value, input_5_value, output_value FROM test_cases WHERE exercise_id=:exid"; 
$st=$db->prepare($sql); 
$st->bindParam(":exid", $exerciseId, PDO::PARAM_INT); // $exerciseID == 145 
$st->execute(); 

$row = $st->fetch(); // default fetch mode is PDO::FETCH_BOTH 

echo $row['input_1_value']; 

这种回声 '真' !!!!为什么???为什么不打印'0'?

使用print_r($row);更多的信息我得到以下输出

Array ([id] => 560 [0] => 560 [exercise_id] => 145 [1] => 145 [author_id] => 496 [2] => 496 [input_1_value] => true [3] => true [input_2_value] => [4] => [input_3_value] => [5] => [input_4_value] => [6] => [input_5_value] => [7] => [output_value] => true [8] => true) 

output_value也返回“真”时,它应该是“0”。

有人知道这里发生了什么吗?任何帮助表示赞赏。不胜感激。

+0

这是我今天看到的最奇怪的事情。 – shamittomar 2010-09-06 06:43:41

+0

我用'$ db = new PDO('dblib:host = your_hostname; dbname = your_db; charset = UTF-8',$ user,$ pass)测试了它'',并且确实工作得到了0,你用什么字符集呢? – domiSchenk 2010-09-06 12:20:24

+0

参考:http://stackoverflow.com/questions/1197005/how-to-get-numeric-types-from-mysql-using-pdo – diyism 2013-10-16 12:22:59

回答