Я решил, что хотел бы отслеживать запросы пользователей на моем сайте, поэтому я создал таблицу MySQL под названием «Поиск» с несколькими простыми полями и модель (класс) для облегчения вставки и управления сохраненные поиски.
Функция модели, которая сохраняет поиск:
public function create() {
$q = $this->db->query("INSERT INTO
`searches` (
`section`,
`keywords`,
`results`,
`location`,
`date`
) VALUES (
%s,
%s,
%s,
%s,
%s
)",
$this->section,
$this->keywords,
$this->results,
$this->location,
date('Y-m-d G:i:s'));
$this->id = $this->db->last_insert($q);
}
... и в моем контроллере, когда страница загружена, я иду:
/* lets save the search if there is one */
if(isset($_GET['q'])) {
$search = $this->load->model('Searches_Single',null);
$search->set('section','sale');
$search->set('keywords',$_GET['q']);
$search->set('results',$grand_total);
$search->set('location',$this->location->id);
$search->create();
unset($search);
}
Что меня удивляет, так это то, что часто вставляются 1-4 повторяющихся строки вместо только одной, которую я ожидаю.
Нет циклов, нет перенаправления ... просто очень простая загрузка страниц. Честно говоря, я верю, что это случилось со мной в прошлый раз, когда я пытался это сделать.
UPDATE
Этого не происходит в моей локальной среде разработки ... только на производстве (страшно). Оба используют один и тот же код ... это может быть сервер?
ОБНОВЛЕНИЕ НОМЕР 2
Я обнаружил, что это происходит при открытии и закрытии страницы. АКА - я проверяю время, когда открывается страница, и затем сценарий регистрирует поиск ... и затем я проверяю, когда страница заканчивает загрузку, и, кажется, что сценарий также регистрирует поиск там ...
GAHHH