簡體   English   中英

MySql 查詢根據時間戳獲取結果

[英]MySql query to get results based on timestamp

在這里,我試圖根據兩個時間戳之間的差異來獲取一些詳細信息,即,有一個修改后的列存儲時間戳,並且從另一個表創建的列也存儲時間戳。 我需要的是時間戳(修改)和時間戳(當前時間)之間的時間戳(創建)。 請幫忙

錯誤號:1054

'where 子句'中的未知列'Array'

select * 來自在時間戳(數組)和時間戳(CURRENT_TIMESTAMP())之間創建的活動

文件名:models/Notification_model.php

行號:11

<?php
class Notification_model extends CI_Model 
{
    public function notifications()
    {
        $q1="select modified from influencer where influencerid=".$this->session->userdata('id')."";
        $query1 = $this->db->query($q1);
        $this->session->set_userdata('modified_time',$query1->result());

        $q="select * from campaigns where created BETWEEN timestamp(".$this->session->userdata('modified_time').") AND timestamp(CURRENT_TIMESTAMP())";
        $query = $this->db->query($q);

        if($query->num_rows()>0){
          return $query->result();
        }
    }
}
?>

您的$query1->result()正在返回一個數組,您應該取第一行和第一列( updated ):

$modified_time = $query1->result()[0][0];

此外,這樣做是一個非常糟糕的主意和一個很大的安全問題:

$q1="select modified from influencer where influencerid=".$this->session->userdata('id')."";

您可能會被 SQL 注入攻擊。 例如,如果我將 ID 定義為: 1; UPDATE users SET is_admin = 1 1; UPDATE users SET is_admin = 1 ,SQL 請求變為: select modified from influencer where influencerid=1; UPDATE users SET is_admin = 1 select modified from influencer where influencerid=1; UPDATE users SET is_admin = 1 ,我是您系統的管理員。

您應該准備好您的陳述以防止這種黑客攻擊:

$query = $this->db->prepare("select modified from influencer where influencerid = :id");
$query->bindParam(':id', $this->session->userdata('id'));
$query->execute();

更多信息在這里: https://www.php.net/manual/en/pdo.prepared-statements.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM