MySql запрос для получения результатов на основе отметки времени - PullRequest
0 голосов
/ 08 апреля 2020

Здесь я пытаюсь получить некоторые детали на основе разницы между двумя временными метками, т. Е. Существует модифицированный столбец, в котором хранится временная метка, и создается столбец из другой таблицы, в котором также хранится временная метка. что мне нужно, это метка времени (создано) между меткой времени (изменено) и меткой времени (текущее время). Plzz help

Номер ошибки: 1054

Неизвестный столбец 'Массив' в 'предложении where'

выбор * из кампаний, в которых была создана BETWEEN timestamp (Array) И временная метка (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();
        }
    }
}
?>

1 Ответ

0 голосов
/ 08 апреля 2020

Ваш $query1->result() возвращает массив, вы должны взять первую строку и первый столбец (updated):

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

Более того, это очень плохая идея и большая проблема безопасности Для этого:

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

Вас могут взломать с помощью SQL инъекции. Например, если я определяю идентификатор для: 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

...