0

这是我的帖子数据

$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().

4

1 回答 1

2

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

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

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

或者,使用intval()

$i = intval( $this->session->userdata('slide_count') );
于 2013-10-12T05:47:56.063 回答