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)这样做的话)然后在同一个模型中有一个同名函数。那会很愚蠢吗?好的,你的编辑给出了答案,直到现在才看到。谢谢!