PHP
php mysqli dotknięte wiersze zwracają 0, gdy powinny zwracać dodatnią liczbę całkowitą
Szukaj…
Wprowadzenie
Ten skrypt został zaprojektowany do obsługi urządzeń raportujących (IoT), gdy urządzenie nie zostało wcześniej autoryzowane (w tabeli urządzeń w bazie danych), dodaję nowe urządzenie do tabeli new_devices. Uruchamiam zapytanie o aktualizację, a jeśli zmieniony_powrot zwraca <1, wstawiam.
Kiedy mam raport nowego urządzenia, przy pierwszym uruchomieniu $ stmt-> wpływa_powraca zwraca 0, kolejna komunikacja zwraca 1, a następnie 1, 0, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3 , 0, 4, 0, 0, 6, 6, 6 itd
To tak, jakby instrukcja aktualizacji zawiodła. Dlaczego?
$ Stmt-> wpływa_ PHP PHP sporadycznie zwraca 0, gdy powinna zwrócić dodatnią liczbę całkowitą
<?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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow