2015-01-29 3 views
1

Извините за мой английский. Я выполняю уникальный запрос INSERT, но в базе данных созданы много записей равных. У меня есть php cms mvc с шаблоном singleton и реестром. Когда я вызываю контроллер, загружаются все модели ядра, включая модель, которая управляет базой данных.PDO - запрос PHP выполняется снова без вызова

Я пишу кусок кода:

class DB extends global_core 
{ 
    private $PDO; 
    private $result; 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function query($query) 
    { 
     $this->result = $this->PDO->prepare($query); 
     $this->result->execute(); 
     return $this->result; 
    } 
} 

В другой модели запустить этот метод:

class Stats extends global_core 
{ 
    private $stored_agent = false; 

    public function __construct() 
    { 
     parent::__construct(); 

     if (!$this->stored_agent) 
     $this->saveAgent(); 
    } 

    public function saveAgent() 
    { 
     if ($this->stored_agent) return; 

     $this->DB->query('INSERT ...'); 

     echo 'ok'; 

     $this->stored_agent = true; 
    } 
} 

Теперь в моей базе данных созданы «N» равный рекорд, но в видео печатается правильно только «хорошо», а не «okokokokokokok».

Почему?

Однако, если я вызываю метод от текущего контроллера, я получаю, по праву, только новую запись.

class page extends controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 

     $this->loadInfo(); 
    } 

    protected function loadInfo() 
    { 
     $this->Stats->saveAgent(); 
    } 
} 

поэтому он работает правильно ...

, где проблема?

+0

Убедитесь, что нет никакого другого оператора INSERT в коде. Измените запрос на то, что он не сработает. Если запрос завершается, выведите трассировку стека отладки. Затем вы увидите, какая функция называется функцией сохранения агента. Возможно, это несколько вызовов, распространяемых в вашем коде. Если у вас есть профилирование XDebug (например, любой другой профиль), вы также можете найти вызывающих пользователей в профиле. –

+0

thanks markus, Я вставил ошибку в запрос и напечатал errorInfo pdo. Трассировка стека показала мне 9 классов, которые вызываются. Но вызов метода - один. – gasmor

+0

Ошибки приложения при первом входе. Является ли трассировка стека той, которую вы ожидали? Возможно, вы захотите реализовать решение для регистрации, а не отладку эха. Возможно, вы эхо в буфере вывода, который не отображается. Трудно помочь удаленно, не зная внутренней работы вашего приложения. –

ответ

0

SOLVED был проблемой неправильной настройки перезаписи URL-адресов. ссылаясь на изображение не существует на сервере, загружали страницу ошибки сайта, на котором вновь создать экземпляр ядра ...

<img src="file not present" > 
Смежные вопросы