Поиск…


Вступление

Этот скрипт предназначен для обработки устройств отчетности (IoT), когда устройство не авторизовано ранее (в таблице устройств в базе данных), я добавляю новое устройство в таблицу new_devices. Я запускаю запрос на обновление, и если action_rows возвращает <1, я вставляю.

Когда у меня есть новый отчет о устройстве, первый раз, когда $ stmt-> affected_rows запускает, он возвращает 0, последующие сообщения возвращают 1, затем 1, 0, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3 , 0, 4, 0, 0, 6, 6, 6 и т. Д.

Как будто инструкция обновления не работает. Зачем?

PHP $ stmt-> affected_rows прерывно возвращается 0, когда он должен возвращать положительное целое число

<?php
    // if device exists, update timestamp
    $stmt = $mysqli->prepare("UPDATE new_devices SET nd_timestamp=? WHERE nd_deviceid=?");
    $stmt->bind_param('ss', $now, $device);
    $stmt->execute();
    //echo "Affected Rows: ".$stmt->affected_rows; // This line is where I am checking the status of the update query.

    if ($stmt->affected_rows < 1){ // Because affected_rows sometimes returns 0, the insert code runs instead of being skipped. Now I have many duplicate entries.
        
        $ins = $mysqli->prepare("INSERT INTO new_devices (nd_id,nd_deviceid,nd_timestamp) VALUES (nd_id,?,?)");
        $ins -> bind_param("ss",$device,$now);
        $ins -> execute();
        $ins -> store_result();
        $ins -> free_result();
    }
?>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow