如何使用CodeIgniter在URL中传递MySQL Datetime值?

时间:2012-05-10 07:31:04

标签: php mysql codeigniter

我想在使用Codeigniter构建的站点URL中传递如下所示的MySQL Datetime值。 所以datetime值是例如。

2012-05-04 07:41:45

我希望它可以使用一些编码或字符串转换功能在站点URL中传递。 因为我已经尝试过使用php urlencode()函数,但它无法正常工作。

在URL中传递此内容的原因是因为我正在查询与该Datetime相关的数据库中的某些记录。所以我必须将它作为参数传递给Controller,为此我必须在URL下传递它。

有什么建议吗?

提前致谢。

5 个答案:

答案 0 :(得分:3)

易:

function receiving_function($time)
{
     $date = date("Y-m-d h:i:s", $time);  // Format this however you want the data
}


function sending_data()
{
    $date = strtotime("2012-05-04 07:41:45");
    redirect ('/yourcontroller/receiving_function/'.$date).
}

答案 1 :(得分:1)

如果您的日期时间在时间​​戳边界内,则可以将其转换为Unix时间戳:

function mysql2timestamp($datetime){
   $val = explode(" ",$datetime);
   $date = explode("-",$val[0]);
   $time = explode(":",$val[1]);
   return mktime($time[0],$time[1],$time[2],$date[1],$date[2],$date[0]);
}

答案 2 :(得分:1)

只需使用strtotime

echo strtotime('2012-05-04 07:41:45');

输出:

1336088505

您也可以base64_encode保留确切的字符串,但我怀疑这是值得的; - )

答案 3 :(得分:1)

为了保留确切的字符串,我有时会将任何非标准的url查询值从ASCII转换为十六进制。在下一页上,将十六进制转换为ASCII。

请参阅http://www.pgregg.com/projects/php/code/hexstr.phps

在某些情况下,我发现在传递搜索查询关键字时也很有用。

答案 4 :(得分:1)

“有一个应用程序!”

Codeigniter提供了一个方便的加密类 - 没有对base64的主要改进,但好处是你可以选择你想要的密码。

你可以不从$ _GET收集而不是传入URI吗?

$this->load->library('encrypt');

$datetime = "2012-05-04 07:41:45";

$encrypted_string = $this->encrypt->encode($datetime);

$hello_again = $this->encrypt->decode($encrypted_string);