Вставить, если не существует никаких других данных, обновите - PullRequest
0 голосов
/ 24 марта 2020

Теперь я хотел бы суммировать значение в другой таблице в MySQL, и значение изменится. Я хотел, чтобы база данных сохраняла данные суммы. Таблица должна обновлять данные, если в таблице уже есть идентификатор сотрудника. Например, идентификатор сотрудника 123 не существует в таблице, поэтому веб-сайт должен вставить данные 123 сотрудника в базу данных, а если идентификатор сотрудника 123 уже существует, веб-сайт должен обновить данные сотрудника в базе данных.

$sql="SELECT SUM(duration) AS duration_sum,empId FROM `overtime` WHERE empId='" .$_SESSION['eid']. "' and sta=1;";
    $result=mysqli_query($db,$sql);
    if(mysqli_num_rows($result)>0){

        while($row=mysqli_fetch_array($result)){
            $balance=$row['duration_sum'];
            $empid = $row['empId'];

            $stmt = $dbh->prepare("INSERT INTO timeoff (total,empId) VALUES(?,?) ON DUPLICATE KEY UPDATE (total,empId) VALUES(?,?)");
            $stmt->bindParam(1,$balance);
            $stmt->bindParam(2,$empid);
            $stmt->bindParam(3,$balance);
            $stmt->bindParam(4,$empid);
            $stmt->execute();

Что мне изменить в этом коде ???

1 Ответ

0 голосов
/ 24 марта 2020

Вы можете использовать оператор REPLACE INTO. https://dev.mysql.com/doc/refman/8.0/en/replace.html

REPLACE работает точно так же, как INSERT, за исключением того, что если старая строка в таблице имеет то же значение, что и новая строка для PRIMARY KEY или UNIQUE индекса, старая строка удаляется перед вставкой новой строки. См. Раздел 13.2.6, «Заявление INSERT».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...