@ReNTalle

Как вставить в запрос данные о названии отдела?

Можете еще посоветовать как оптимизировать код
$fprint_id = (int)$_GET['fprint_id'];
    $device_uid = $_GET ['device_uid'];
    $serialnumber  = (int)$_GET['serialnumber'];
    
    if ($fprint_id > 0 AND $fprint_id < 128) {
        //Проверить введенный f_id в диапазоне от 1 до 127 
        $stmtfprint = $conn->prepare('SELECT * FROM users WHERE fprint_id = ?');
        $stmtfprint->bind_param('s', $fprint_id);
        $stmtfprint->execute();
        $resultfprint = $stmtfprint->get_result()->fetch_all();
        if (!$resultfprint){
            //существует ли такой же введенный fID, если нет продолжить
            $stmtSerial = $conn->prepare('SELECT * FROM users WHERE serialnumber = ?');
            $stmtSerial->bind_param('i', $serialnumber);
            $stmtSerial->execute();
            $resultSerial = $stmtSerial->get_result()->fetch_all();
            if (!$resultSerial){
                //существует ли такой же SERIALNUMBER, если нет продолжить
                $stmtdevice_uid = $conn->prepare('SELECT * FROM users WHERE device_uid = ?');
                $stmtdevice_uid->bind_param('s', $device_uid );
                $stmtdevice_uid->execute();
                $resultdevice_uid = $stmtdevice_uid->get_result()->fetch_all();
                if ($resultdevice_uid = true){
                    //существует ли такой же ОТДЕЛ, если нет продолжить
                    $stmtadd_fid = $conn->prepare('SELECT * FROM `users` WHERE `add_fid` = 1');
                    $stmtadd_fid->execute();
                    $resultadd_fid = $stmtadd_fid->get_result()->fetch_all();
                    if ($resultadd_fid){
                        echo ('Нельзя добавить более одного ID  за раз');
                        //если где-то значение add_fid = 1 - ошибка, иначе продолжить 
                        exit();
                    } else{
                        //НАДО ЗАГОТОВИТЬ  И ВСТАВИТЬ В ЗАПРОС ДАННЫЕ О НАЗВАНИИ ОТДЕЛА (ОНО СВЯЗАНО С DEV_UID)
                        $sqlINSERTquery = "INSERT INTO users ( fprint_id, user_date, device_uid, device_dep, del_fid , add_fid) 
                        VALUES ($fid, CURDATE(), $device_uid, $dev_name, 0, 1)"; 
                        // $db->query($sqlINSERTquery);
                        echo('Запись начата');
                          }
                } else{
                    exit('Данный отдел  не существует!');
                      }
            } else{
                exit('Серийный номер уже занят!');
                  }   
        } else{
            exit('Этот ID  уже существует!');
              }
    } else{
        exit('ID  должен быть в диапазоне от 1 до 127' );
          }
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
оптимизировать - https://methodpoet.com/return-early-or-if-statement/
думаю при такой линейной логике вставить нужную проверку не должно быть проблемой
почитать - https://habr.com/ru/post/565652/
<?php
$fprint_id = (int)$_GET['fprint_id'];
$device_uid = $_GET ['device_uid'];
$serialnumber = (int)$_GET['serialnumber'];

if($fprint_id < 1 || $fprint_id > 128) {
    exit('ID  должен быть в диапазоне от 1 до 127');
}

//Проверить введенный f_id в диапазоне от 1 до 127
$stmtfprint = $conn->prepare('SELECT * FROM users WHERE fprint_id = ? LIMIT 1');
$stmtfprint->bind_param('s', $fprint_id);
$stmtfprint->execute();
$resultfprint = $stmtfprint->get_result()->fetch_all();
if($resultfprint) {
    exit('Этот ID  уже существует!');
}

//существует ли такой же введенный fID, если нет продолжить
$stmtSerial = $conn->prepare('SELECT * FROM users WHERE serialnumber = ? LIMIT 1');
$stmtSerial->bind_param('i', $serialnumber);
$stmtSerial->execute();
$resultSerial = $stmtSerial->get_result()->fetch_all();
if($resultSerial) {
    exit('Серийный номер уже занят!');
}

//существует ли такой же SERIALNUMBER, если нет продолжить
$stmtdevice_uid = $conn->prepare('SELECT * FROM users WHERE device_uid = ? LIMIT 1');
$stmtdevice_uid->bind_param('s', $device_uid);
$stmtdevice_uid->execute();
$resultdevice_uid = $stmtdevice_uid->get_result()->fetch_all();
if($resultdevice_uid != true) {
    exit('Данный отдел  не существует!');
}

//существует ли такой же ОТДЕЛ, если нет продолжить
$stmtadd_fid = $conn->prepare('SELECT * FROM `users` WHERE `add_fid` = 1 LIMIT 1');
$stmtadd_fid->execute();
$resultadd_fid = $stmtadd_fid->get_result()->fetch_all();
if($resultadd_fid) {
    exit('Нельзя добавить более одного ID  за раз');
    //если где-то значение add_fid = 1 - ошибка, иначе продолжить
}

//НАДО ЗАГОТОВИТЬ  И ВСТАВИТЬ В ЗАПРОС ДАННЫЕ О НАЗВАНИИ ОТДЕЛА (ОНО СВЯЗАНО С DEV_UID)
$sqlINSERTquery = "INSERT INTO users ( fprint_id, user_date, device_uid, device_dep, del_fid , add_fid) 
    VALUES ($fid, CURDATE(), $device_uid, $dev_name, 0, 1)";
// $db->query($sqlINSERTquery);
echo('Запись начата');
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vfreelancer
@vfreelancer
php
как оптимизировать код:
например, вместо
if (..) {
} else {
exit();
}
делать так:
if (! ..) {
exit();
}
.. а здесь случай true
так вы избавитесь от 5 вложенных if и код будет на одном отступе
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы