[英]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.