如何在会话中存储数据时从post方法生成整数数据类型

时间:2013-10-12 05:45:00

标签: php mysql codeigniter

这是我的帖子数据

$post=$this->input->post('input_slide');

当我签入$post时,我的var_dump($post)变量上面是一个字符串数据类型。但我想转换INTEGER数据类型。所以写了这段代码

$post_int=sprintf("%d",$post);

然后我存储会话$post_int变量

    //set my session
    $this->session->set_userdata('slide_count',$post_int);  
    //retrive my session
    $i=$this->session->userdata('slide_count');

这里我的$i在mysql查询中执行整数行为。

  

但我的问题是为什么var_dump($i)仍然显示STRING数据类型以及mysql如何匹配它。   这是我的mysql查询

$sql="

    SELECT  DISTINCT p.insert_operation,DATE(p.dates) AS pur_date 
    FROM product_purchases AS p
    WHERE DATE(p.dates) BETWEEN 
    (
        SELECT  DATE_SUB(date(dates), INTERVAL  ? DAY) FROM product_purchases order by product_purchase_id desc limit 1
    )               
    AND 
    (
        SELECT DATE(dates) FORM product_purchases ORDER BY product_purchase_id DESC LIMIT 1
    )
    GROUP BY pur_date
    order BY pur_date DESC
";
$query=$this->db->query($sql,$i); 

请注意,当我不使用sprintf()时,mysql显示错误。

1 个答案:

答案 0 :(得分:2)

sprintf()始终returns根据格式化字符串格式生成的字符串。

删除sprintf()语句并将变量转换为int

$i = (int) $this->session->userdata('slide_count');

或者,使用intval()

$i = intval( $this->session->userdata('slide_count') );