gpt4 book ai didi

php - CodeIgniter Active Record 返回 Mysql 数据类型而不仅仅是字符串

转载 作者:可可西里 更新时间:2023-11-01 08:51:33 24 4
gpt4 key购买 nike

我使用的是 codeIgniter 2.0.3 版。我想知道是否有一种简单的方法可以返回具有正确数据类型的数据。例如模式:

+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| term | varchar(255) | NO | | NULL | |
| level | int(11) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+

事件记录result_array返回:

array(4) {
[0]=>
array(3) {
["id"]=>
string(1) "1"
["term"]=>
string(11) "Mesoamerica"
["level"]=>
string(1) "1"
}
[1]=>
array(3) {
["id"]=>
string(1) "2"
["term"]=>
string(6) "Mexico"
["level"]=>
string(1) "1"
}
[2]=>
array(3) {
["id"]=>
string(1) "3"
["term"]=>
string(10) "indigenous"
["level"]=>
string(1) "2"
}
[3]=>
array(3) {
["id"]=>
string(1) "4"
["term"]=>
string(5) "ruins"
["level"]=>
string(1) "2"
}
}

想法是让类型通过结果集。 ID 应为 INTEGERlevel 应为 INTEGER。我通常只是对需要使用的数据进行类型转换。我没有在文档中看到任何将此推送到 codeIgniter 的方法,但我希望有一种简单的方法可以做到这一点。我已经在 PDO 中看到了执行此操作的方法,但 codeIgniter 是否为我提供了某种便利来执行此操作?

最佳答案

这是我制作的助手:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
* cast_fields
*
* Casts string values provided from database into
* the appropriate datatype of possible.
*/
if ( ! function_exists('cast_fields'))
{
function cast_fields($fields, $results)
{
for($i=0; $i<count($fields); $i++) {
$name = $fields[ $i ]->name;
$type = $fields[ $i ]->type;
$int_types = array(
'int',
'tinyint',
'smallint',
'mediumint',
'bigint'
);
if(in_array($type, $int_types)) {
for($j=0; $j<count($results); $j++) {
$casted = intval( $results[ $j ]->{ $name } );
$results[ $j ]->{ $name } = $casted;
}
}
}
return $results;
}

}

/* End of file field_data_helper.php */
/* Location: ./application/helpers/field_data_helper.php */

到目前为止它只适用于整数。您可以对其进行扩展以支持其他数据类型。

使用方法:

// Get rows from database.
$query = $this->db->get_where( $this->table, $criteria, $limit, $offset );
$results = $query->result();

// Cast data to the correct datatypes.
$fields = $this->db->field_data( $this->table );
$this->load->helper('field_data_helper');
$results = cast_fields($fields, $results);

关于php - CodeIgniter Active Record 返回 Mysql 数据类型而不仅仅是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13236002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com