php - MySql查询根据时间戳获取结果
问题描述
在这里,我试图根据两个时间戳之间的差异来获取一些详细信息,即,有一个修改后的列存储时间戳,并且从另一个表创建的列也存储时间戳。我需要的是时间戳(修改)和时间戳(当前时间)之间的时间戳(创建)。请帮忙
错误号:1054
'where 子句'中的未知列'Array'
从创建 BETWEEN 时间戳(数组)和时间戳(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
,则 SQL 请求变为:
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
推荐阅读
- java - 在 android studio 的 xml 文件中命名字符串数组给我一个错误
- html - 我想获得带有所选值的下拉列表(更新到角度 10 及以上)
- javascript - 使用 JQuery clone() 时,为什么 remove() 不起作用
- android - 导航抽屉项目突出显示颜色超出角落的半径
- python - 如何在熊猫中制作一列分类组
- node.js - 猫鼬:在数组内应用对象值的 $addToSet?
- ios - Swift • 如何在 SwiftUI 中实现 Peek 和 Pop 功能?
- java - 我需要读取并加载一个文本文件并将元素添加到哈希表中;而是用户输入数据
- python - 如何使用从 github 下载的数据库文件夹在本地创建 MYSQL 数据库
- verilog - 4 位加减器 Verilog 代码错误