php - 即使列类型为整数,Kohana DB::select 也会以字符串形式返回结果

标签 php kohana

我的表格定义如下:

CREATE TABLE `reputables` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `subject` varchar(200) NOT NULL,
  `type` int(11) NOT NULL,
  `verification_key` varchar(45) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  `date_associated` datetime DEFAULT NULL,
  `request_user_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `subject_UNIQUE` (`subject`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1$$

执行

$query = DB::select() ->from( 'reputables')->where('subject', '=', $key)->as_object()->execute();
$reputable = $query->current();

返回一个对象,但属性的类型都是字符串,即使 db 列定义为 int 也是如此。这会导致 json_encode 出现问题,因为它将双引号括在应该是整数的值周围。

如何让数据库在设置对象属性时保留列类型?

更新:

看起来这可能是一个 php 问题。这做同样的事情。

$testres = mysql_query('SELECT * from reputables WHERE id = 1');
$obj = mysql_fetch_object($testres);

所有 $obj 属性都是字符串类型。

最佳答案

返回的类型始终是字符串。
之后您可以使用一些自动检测、使用 ctype_* 函数来转换列,或者创建一个小例程来查询数据库中的字段类型并相应地设置类型

关于php - 即使列类型为整数,Kohana DB::select 也会以字符串形式返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8023048/

相关文章:

php - 在 Postgres 数据库上从 PHP (Kohana) 运行批处理 SQL 脚本的首选方式是什么

nginx - kohana 和 nginx/php-fpm 的问题

mysql - 同一列时两条记录限制

php - 为用户语言重定向索引的最佳 SEO header 状态

php - 在MySql中动态创建数据库并设置权限

php - 无法向数据库插入MCRYPT加密数据

Kohana 3 ORM - 如何判断当前保存的模型是否是新的?

php - 动态设置 Kohana 模板名称

php - 大型文本字段的比较分组 - FULLTEXT 搜索、SOLR 或其他?

php - 字符长度限制 $_GET?