Ich stieß auf ein Problem mit merkwürdigem Verhalten von mysqli_query. Es gibt eine foreach-Schleife, um Tabellenzeilen zu aktualisieren, aber das Update für die letzte Schleife wird nicht in die Datenbank geschrieben (alle anderen Aktualisierungen werden erfolgreich geschrieben). Es gibt keinen Fehler und mysqli_affected_rows gibt 1 wie es sollte zurück. Der Code durchläuft bis zum Ende, bestätigt durch eine Echo-Anweisung nach mysqli_query.Merkwürdiges Verhalten von mysqli_query
Ich habe versucht, ein Array mit nur einem Element und dem gleichen Problem zu durchlaufen.
Was geht hier vor? Ist jemand auf das gleiche Problem gestoßen?
OK ... hier ist der wesentliche Teil des Codes, der ganze Code ist nicht möglich, da dort maximal 30000 Zeichen erlaubt sind. Ich habe auch die Sql-Saite wiederholt und alles ist perfekt. Aber wie gesagt, das Update für die letzte Schleife (das letzte Mal wenn die Schleife ausgeführt wird) wird nicht in die MySQL-DB geschrieben.
$sql_getRelations = "SELECT id_machine, device_id, serial_number, variant_id, company_id, last_file FROM view_machines "
. "WHERE company_id NOT IN ('" . implode('\',\'' , $btc_companies) . "') "
// . "AND id_machine = 158 "
. "AND device_type_id = 4 AND machine_status = 'active' "
. "ORDER BY id_machine ASC;";
$result_relations = mysqli_query($db_ed, $sql_getRelations);
$relations_arr = mysqli_fetch_all($result_relations, MYSQLI_ASSOC);
mysqli_free_result($result_relations);
foreach($relations_arr as $machine){
//...some other code here
$sql_update_device = "UPDATE device SET last_file = '" . $str_max_ts . "' WHERE id_device = " . $machine['device_id'] . ";";
$update_device = mysqli_query($db_ed, $sql_update_device);
if (!$update_device) {
error_log("\r\n" . date("Y-m-d H:i:s") . ': !!!!Updatefehler device: ' . $machine['device_id'] . ": " . mysqli_error($db_ed), 3, "C:/xampp/htdocs/cronjob/error_log.txt");
}
echo $machine['id_machine'] . ', ';
}
mysqli_close($db_ed);
erstellen [Minimal, vollständig und überprüfbar Beispiel] (http://stackoverflow.com/help/mcve) – RiggsFolly
ok..I'll zu sehen, was ich –
tun kann, wenn alle anderen Updates ausführen, dann schlägt etwas fehl und einige Ihrer Spalten akzeptieren wahrscheinliche Null-/Leerwerte. Es ist schwer zu sagen, da wir keinen Code haben, mit dem wir arbeiten können. Sie müssen den gesamten relevanten Code und das Datenbankschema ebenfalls veröffentlichen. Es kann "still" ausfallen, weil die Spaltenlängen auch zu kurz sind. –