Я пытаюсь зарегистрировать в своей базе данных слова, которые пользователь ищет на моем веб-сайте.
Идея заключается в следующем: если искомое слово совпадает с уже зарегистрированным в моей базе данных, я просто добавляю 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;
}
}