Buscar..


Introducción

Este script está diseñado para manejar dispositivos de informes (IoT), cuando un dispositivo no está autorizado previamente (en la tabla de dispositivos de la base de datos), agrego el nuevo dispositivo a una tabla de nuevos dispositivos. Ejecuto una consulta de actualización, y si resulto en las flechas devuelve <1, inserto.

Cuando tengo un nuevo informe de dispositivo, la primera vez que $ stmt-> favorite_rows se ejecuta devuelve 0, la comunicación posterior devuelve 1, luego 1, 0, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3 , 0, 4, 0, 0, 6, 6, 6, etc.

Es como si la instrucción de actualización fallara. ¿Por qué?

PHP $ stmt- >fecteado_rows devolviendo intermitentemente 0 cuando debería devolver un entero positivo

<?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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow