Ich überprüfe ein Projekt, und ich fand diesen Code, der Datensätze aus MySQL
löschen soll, obwohl dies nicht der beste Ansatz ist, um dies zu erreichen, muss ich das machen funktioniert, aber für mich ist in Ordnung, deshalb bin ich hier, weil ich nicht den Fehler sehe oder was ist falsch mit diesem Code, zeigt keine Fehler, Warnung, nichts Ich habe den Code direkt in PHPMyAdmin
getestet und es funktioniert gut, so das der Code ist ...Löschen von Datensätzen aus MySQL innerhalb foreach Schleife - PHP
$get_records = mysql_query('SELECT id_detail FROM my_table WHERE user_id = "'.$user_id.'" AND last_date BETWEEN "'.$date1.'" AND "'.$date2.'"') or die (mysql_error());
$array_details = array();
while ($details = mysql_fetch_array($get_records)) {
$array_details[] = $details['id_detail'];
}
$array_details = array_unique($array_details);
foreach ($array_details as $id_detail) {
$delete_detail = mysql_query("DELETE FROM my_table WHERE user_id = '".$user_id."' AND id_detail = '".$id_detail."'") or die (mysql_error());
}
ich mit der gleichen ID Detail (dies funktioniert auf diese Weise) zwei Datensätze in derselben Tabelle bekam, so Wenn ich die ID correcly mit der Abfrage innerhalb der foreach
Schleife bekommen sollte sie löschen alle die Datensätze mit diesem id_detail
und user_id
spielt keine Rolle, wenn in der Abfrage ich sage, zwischen welchen Daten diese IDs erhalten, löscht es nur eine, und das ist, die das Datum zwischen diesem Bereich
Ich habe keine Ahnung, warum ist nicht beide löschen, eine Idee, was ich vermisse?
HINWEIS: Wie ich bereits sagte, wenn ich diese Abfrage direkt in PHPMyAdmin
mache, funktioniert es gut und wenn ich aus PHP tun, löschen Sie nur einen.
Vielleicht ist es nur eine ID anstelle von zwei (in diesem Skript) bekommen –
Warum würden Sie PHP als Mitte-Mann für diesen Einsatz? Sie umgehen MySQLs eingebaute Logik und erhöhen Ihre Abfragen um n + 1. Warum nicht einfach eine einzige 'DELETE FROM {logic}' Anweisung? Selbst wenn Sie aus irgendeinem Grund PHP-Logik zwischen all diesen Dingen haben möchten, haben Sie ein Array von Primärschlüsseln (mutmaßlich), also warum nicht "WHERE IN" nutzen, um Abfragen zu reduzieren? – Blake
Wenn Sie immer 2 Einträge in der Tabelle haben, kann das Löschen nach dem Offset etwas wie i = 0 lösen; foreach ($ a als $ b) {$ my_query zu $ b [0]; $ i ++;} – xYuri