MYSQL PDO возвращает тип странного преобразования - PullRequest
2 голосов
/ 06 сентября 2010

У меня есть следующее определение таблицы в 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'];

это эхо "правда" !!!! Зачем??? почему не выводится '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 также возвращается как 'true', когда оно должно быть '0'.

Кто-нибудь знает, что здесь происходит? Любая помощь приветствуется. С благодарностью.

1 Ответ

0 голосов
/ 06 сентября 2010

Попробуйте установить для константы PDO::ATTR_STRINGIFY_FETCHES значение true.
Посмотрите на http://php.net/manual/en/pdo.setattribute.php,, посмотрите, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...