Поисковые слова не зарегистрированы правильно в моей базе данных - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь зарегистрировать в своей базе данных слова, которые пользователь ищет на моем веб-сайте.

Идея заключается в следующем: если искомое слово совпадает с уже зарегистрированным в моей базе данных, я просто добавляю 1на количество раз слово было найдено.Если слово не найдено в моей таблице поиска, я добавляю новое слово в свою таблицу.

Проблема в том, что мне искать слово, если оно зарегистрировано в моей таблице, изменить всезаписи с названием слова, которое вы ищете, и увеличить количество на единицу.Например: у меня есть два регистра, слово 1 и слово 2, если я ищу слово 1, оно возвращает, оно обновляет два слова с именем слова 1 и количества со словом 1

Поля моей таблицы - это идентификатор, слово и сумма

Где проблема в моем коде?

Я делю сектор, где выполняется вызов только на контроллер, а затем все о контроллере и модели

search.php

$response= SearchController::ctrNewSearch($word);

search.controller.php

<?php

class SearchController{

    public function ctrNewSearch($word){

        $table = "searchs";

        $response = SearchModel::mdlShowSearchs($table);

        $foundWord = 0;
        $amount= "1";

        foreach ($response as $key => $value) {

            if ($value["word"] == $word) {

                $foundSearch= 1;
                $id = $value["id"];
                $updatedAmount= $value["amount"] + 1;

            } 

        }

        if ($foundWord == 1){

            $response1= SearchModel::mdlUpdateSearch($table, $word, $id, $updatedAmount);
            return $response1;

        } else {

            $response0 = SearchModel::mdlAddSearch($table, $word, $amount);
            return $response0;

        }

    }

}

search.model.php

<?php

require_once "conection.php";

class SearchModel{

    static public function mdlShowSearchs($table){

        $stmt = Conexion::conectar()->prepare("SELECT * FROM $table");

        $stmt -> execute();

        return $stmt -> fetchAll();

        $stmt -> close();

        $tmt =null;

    }

    static public function mdlAddSearch($table, $word, $amount){

        $stmt = Conexion::conectar()->prepare("INSERT INTO $table (word, amount) VALUES (:word, :amount)");

        $stmt->bindParam(":word", $word, PDO::PARAM_STR);
        $stmt->bindParam(":amount", $amount, PDO::PARAM_INT);

        if($stmt->execute()){ 

            return "ok"; 

        }else{ 

            return "error"; 

        }

        $stmt->close();

        $tmt =null;
    }

    static public function mdlUpdateSearch($table, $word, $id, $updatedAmount){

        $stmt = Conexion::conectar()->prepare("UPDATE $table SET word = :word, amount = :amount WHERE $id = :id");

        $stmt->bindParam(":word", $word, PDO::PARAM_STR);
        $stmt->bindParam(":amount", $updatedAmount, PDO::PARAM_INT);
        $stmt->bindParam(":id", $id, PDO::PARAM_INT);

        if($stmt -> execute()){

            return "ok";

        }else{

            return "error"; 

        }

        $stmt -> close();

        $stmt = null;

    }

}

1 Ответ

0 голосов
/ 01 февраля 2019

Для каждого цикла возникает проблема, если условие не проверяется, а присваивается, что всегда верно.Запрос на обновление должен находиться в цикле for, а переменная $ foundword присваивает ему значение 0 каждый раз, если слово найдено.Я внес некоторые изменения, попробуйте и попытайтесь решить, если есть синтаксическая проблема.

   public function ctrNewSearch($word){

    $table = "searchs";

    $response = SearchModel::mdlShowSearchs($table);

    $foundWord = 0;
    $amount= "1";

    foreach ($response as $key => $value) {

        if ($value["word"] == $word) {

            $foundWord = 1;
            $id = $value["id"];
            $updatedAmount= $value["amount"] + 1;

        }        

        if ($foundWord == 1){
          $response1= SearchModel::mdlUpdateSearch($table, $word, $id, $updatedAmount);
        $foundWord = 0;
        return $response1;

    } else {
        $response0 = SearchModel::mdlAddSearch($table, $word, $amount);
        return $response0;
    }
  }
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...