@ReNTalle

Как обновить значение в таблице по заданному параметру?

Хочу сделать REST API. У меня не получается написать функцию UPDATE. Пытаюсь повторить как в гайде , но ничего не получается. Можете помочь? Я полный новичок.
Мне нужно менять значение device_mode на 0 и 1, когда будет отправляться POST запрос ({{url}}/api/ch_mode?id=1&device_mode=0)

--
-- Структура таблицы `devices`
--
CREATE TABLE `devices` (
  `id` int(11) NOT NULL,
  `device_name` varchar(50) CHARACTER SET latin1 NOT NULL,
  `device_dep` varchar(20) CHARACTER SET latin1 NOT NULL,
  `device_uid` text CHARACTER SET latin1 NOT NULL,
  `device_date` date NOT NULL,
  `device_mode` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
--
-- Дамп данных таблицы `devices`
--
INSERT INTO `devices` (`id`, `device_name`, `device_dep`, `device_uid`, `device_date`, `device_mode`) VALUES
(1, 'es32', 'Department', 'fte26cf2e68d6055', '2022-09-22', 1);

-- --------------------------------------------------------


Api.php
Маршрутизация запроса (работает).
router('/api/ch_mode', 'POST', function () {
    update_item();
});


Update.php
function update_item(){
        include_once 'api/db.php';
        include_once 'api/users.php';

        $database = new Database();
        $db = $database->getConnection();
        $item = new User($db);

        // $device_mode = mysql_escape_string($_POST['device_mode']);
        // $id = mysql_escape_string($_POST['id']);
        $item->id = isset($_GET['id']) ? $_GET['id'] : die();
        $item->name = $_GET['device_mode'];
        $item-> $id = $_POST['id'];
        $item->$device_mode = $_POST['device_mode'];
      
        if($item->updateDevMode()){
            echo json_encode("updated.");
        } else{
            echo json_encode("not updated");
        }


Users.php

public function updateDevMode(){
            $this->device_mode=htmlspecialchars(strip_tags($this->device_mode));
            $this->id=htmlspecialchars(strip_tags($this->id));
            // $sqlQuery = "UPDATE ". $this->devices_dep ." SET device_mode = '$device_mode''".$this->device_mode."', WHERE id = ='$id'".$this->id;
            $sqlQuery = "UPDATE". $this->devices_dep ." SET device_mode='?' WHERE id ='?'";
           
            if($this->db->affected_rows > 0){
                return true;
                }
                return false;   
            }
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 1
@nozzy
Symfony, Laravel, SQL
Ты забыл подставить данные в запрос и выполнить сам запрос
public function updateDevMode(){
            $devices_dep = "YOUR_TABLE_NAME";
            $device_mode=htmlspecialchars(strip_tags($this->device_mode));
            $id=htmlspecialchars(strip_tags($this->id));
            $sqlQuery = "UPDATE $devices_dep SET device_mode=$device_mode WHERE id=$id";
            $this->db->query($sqlQuery);

            if($this->db->affected_rows > 0){
                return true;
                }
                return false;   
            }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы