代码之家  ›  专栏  ›  技术社区  ›  Jacob

MYSQL PDO返回类型奇怪转换

  •  2
  • Jacob  · 技术社区  · 14 年前

    我在MYSQL中有以下表定义

    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
    

    我对…的价值感兴趣,也有问题 input_1_value . 在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'];
    

    更多信息请使用 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”时,也返回为“true”。

    1 回复  |  直到 14 年前
        1
  •  0
  •   mike    14 年前

    尝试设置常数 PDO::ATTR_STRINGIFY_FETCHES
    看一看 http://php.net/manual/en/pdo.setattribute.php