Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在codeigniter中操纵db结果_Php_Sql_Codeigniter - Fatal编程技术网

Php 在codeigniter中操纵db结果

Php 在codeigniter中操纵db结果,php,sql,codeigniter,Php,Sql,Codeigniter,我的数据库中有一些信息,我希望在将它们传递给控制器和视图之前能够对这些信息进行操作。例如,我有一个出生日期,我想变成年龄 这就是我到目前为止所做的: $sql = ('SELECT username, birthdate, profile_text FROM users WHERE id = ?'); $q = $this->db->query($sql, $this->session->userdata('user_id')); if ($q->num_row

我的数据库中有一些信息,我希望在将它们传递给控制器和视图之前能够对这些信息进行操作。例如,我有一个出生日期,我想变成年龄

这就是我到目前为止所做的:

$sql = ('SELECT username, birthdate, profile_text FROM users WHERE id = ?');

$q = $this->db->query($sql, $this->session->userdata('user_id'));

if ($q->num_rows() === 1) {
    return $q->row();
}
因此,在返回它之前,我想处理对象中的
生日

如果我传递一个字符串作为行的第二个参数,我可以使用一个类来完成。但我不知道我将如何做到这一点,我将把这门课放在哪里


我还可以使用
row\u array()
作为一个数组来获得结果,如果这样做可以简化工作的话?

制作一个函数,将出生日期转换为年龄:

public function convertToAge($birthdate){
         $birthDate = explode("/", $birthDate);

         $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1],
       $birthDate[2]))) > date("md") ? ((date("Y")-$birthDate[2])-1):(date("Y")-
$birthDate[2]));
return $age
}
您可以设置自定义对象来解决问题,如下所示:

$sql = ('SELECT username, birthdate, profile_text FROM users WHERE id = ?');

$q = $this->db->query($sql, $this->session->userdata('user_id'));

if ($q->num_rows() === 1) {
    $userobject = $q->row();
}
$userobject->birthdate = $this)>convertToAge($userobject->birthdate);
return $userobject
在应用程序的其他部分,您可以检索您的userobject,并像处理任何其他对象一样获取出生日期:

$userobject = $this->model->getuserobject()
$birthdate = $userobject->birthdate
希望这有帮助,请随意问更多问题=)

我不确定这是否有帮助。 我会在模型中加入一个小函数,如下所示:

public function datetoage()
 {
 $birthDate = $datetouse;
         //explode the date to get month, day and year
         $birthDate = explode("/", $birthDate);
         //get age from date or birthdate
         $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1],  $birthDate[2]))) > date("md") ? ((date("Y")-$birthDate[2])-1):(date("Y")-$birthDate[2]));
         return $age;
}

然后只需将if应用于查询数据,如$age=datetoage($row[birthdate])

这绝对是一个解决办法。例如,我想知道如何通过一个函数来操作它?仅举一个例子,如何使用$userobject变量来操作它,年龄问题并不是真正的问题。我真的很感谢你的帮助(:我有点困惑,你可以通过$userobject->birthdate编辑和检索生日。你是什么意思?通过一个函数来操作它?如果我可以像$userobject->birthdate=date\u to\u age($userobject->birthdate)这样做的话)然后在同一个模型中有一个同名函数。那会很愚蠢吗?好的,你的编辑给出了答案,直到现在才看到。谢谢!