Когда отсылаю запрос с формы поиска происходит зацикливание

213
23 августа 2017, 19:12

Есть метод поиска

<form class="navbar-form navbar-left" role="search"  method="POST">
                <div class="form-group">
                    <input class="form-control" placeholder="Search" name="search"   type="text">
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
            </form>

далее методом search я получаю из поста данные

public function search ()
{
    if (isset( $_POST['search'] )?$_POST['search']:null) {
        print_r ( $_POST );
        $text = self::protect ( $_POST['search'] );
        $search = new newsModel();
        $this->data['search'] = $search->search ( $text );
        $this->render ( 'search' );
    }
}

модель:

public function search($text)
{
   $text=$this->db->escape($text);
   $result=$this->db->query("SELECT * FROM $this->table WHERE `title` LIKE '$text%'");
   return $result;
}

Class db:

 class DB
{
    private static $connection;
public static   function getInstance(){
    if (self::$connection===null){
        self::$connection=new \mysqli( DB_HOST, DB_USER, DB_PASS, DB_NAME );
        self::$connection->query  ('SET NAMES UTF8');
        if (self::$connection->errno){
            die("Error while connect to MySql");
        }
    }
    return self::$connection;
}

private function __clone() { //запрещаем клонирование объекта модификатором private
}
protected function __wakeup(){
}
public function __construct ()
{
    $this->db=DB::getInstance ();
}
/**
 * @param $sql
 * @return array|bool|\mysqli_result
 */
public function query ($sql)
{
    $result = $this->db->query ( $sql );
    if (is_bool ( $result )) {
        return $result;
    }
    $data = [];
    while ($row = mysqli_fetch_assoc ( $result )) {
        $data[] = $row;
    }
    if (!$data) {
        return false;
    }
    return $data;
}

/**
 * protect for sql injection
 * @param $value
 * @return string
 */
public function escape ($value)
{
    return $this->db->real_escape_string ( $value );
}

метод search вызывается в методе render

 protected function render($templateName)
{
    $data = $this->data;
    $message = $this->message;
    $data['menu']=self::getCat();
    self::search();
    ob_start();
    //динамический контент
    $render = SITE_DIR . DS . 'View' . DS . $this->name . DS . $templateName . '.php';
    if ($render) {
        include($render);
    }
    $content = ob_get_clean();
    include SITE_DIR . DS . 'View' . DS . 'Layout' . DS . $this->layout . '.php';
}
  public static function protect($text)
{
    $text = trim($text);
    $text = strip_tags($text);
    return $text;
}

Когда я посылаю запрос, отсылается много запросов и выдает ошибку "fatal error Allowed memory size".

"he" это мой запрос. Данные я могу получить, но они так само будут зацикленно выводиться, пока память не закончится.

Все остальное работает нормально только с поиском.

READ ALSO
помошь по php mysql [требует правки]

помошь по php mysql [требует правки]

У меня проблемаОдна решать не могу

219
Почему PDO не экранирует кавычки?

Почему PDO не экранирует кавычки?

Вот таким кодом вставляю в базу новые записи, когда в значениях любой из переменной есть кавычки они без экранирования вставляются в базу,...

353
Как правильно сделать фильтр товаров с чекбоксами model search?

Как правильно сделать фильтр товаров с чекбоксами model search?

Всем привет, не понимаю как правильно сделать фильтр товаров по свойствамУ меня yii2 advanced! В фильтре хочу вывести хотя бы примитивное что бы понять...

372