Heim > Datenbank > MySQL-Tutorial > Wie aktualisiere ich effizient mehrere MySQL-Datensätze mithilfe eines Integer-Arrays in PHP?

Wie aktualisiere ich effizient mehrere MySQL-Datensätze mithilfe eines Integer-Arrays in PHP?

Barbara Streisand
Freigeben: 2024-12-09 10:50:06
Original
1041 Leute haben es durchsucht

How to Efficiently Update Multiple MySQL Records Using an Integer Array in PHP?

So verwenden Sie ein Array von Ganzzahlen in MySQL-Abfragen (PHP)

Problem:

Sie benötigen eine Möglichkeit, ein Array zufälliger Inhaltselement-IDs in einer MySQL-Abfrage zu verwenden, wobei jede ID in der Reihenfolge von in die WHERE-Klausel eingefügt wird sein Erscheinen im Array. Diese Abfrage sollte ein UPDATE für jede einzelne ID im Array sein.

Lösung:

Die Verwendung vorbereiteter Anweisungen für SQL-Operationen in PHP wird dringend empfohlen. Vorbereitete Anweisungen bieten erhöhte Sicherheit, indem sie SQL-Injection-Angriffe verhindern und die Effizienz durch die Kompilierung von Datenbankanweisungen steigern. Zwei Ansätze, die Sie in Betracht ziehen können, sind:

Iterativer Ansatz:

$ids = array(2, 4, 6, 8);

$sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id = ?";
$stmt = $mysqli->prepare($sql);

for ($i = 0; $i < count($ids); $i++) {
    $stmt->bind_param("i", $ids[$i]);
    $stmt->execute();
    echo "Updated record ID: $id\n";
}

$stmt->close();
Nach dem Login kopieren

Einzelausführungsansatz:

$ids = array(2, 4, 6, 8);

$params = implode(",", array_fill(0, count($ids), "?"));
$sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id IN ($params)";
$stmt = $mysqli->prepare($sql);

$types = str_repeat("i", count($ids)); // "iiii"
$args = array_merge(array($types), $ids); // ["iiii", 2, 4, 6, 8]
call_user_func_array(array($stmt, 'bind_param'), ref($args)); // $stmt->bind_param("iiii", 2, 4, 6, 8)

$stmt->execute();

$stmt->close();
echo "Updated record IDs: " . implode("," $ids) ."\n";
Nach dem Login kopieren

Für zusätzliche Felder, die Sie hinzufügen müssen, hängen Sie einfach weitere Parameterplatzhalter an die SQL an Anweisung.

Welcher Ansatz soll gewählt werden:

  • Iterativer Ansatz: Geeignet für UPDATE- und INSERT-Vorgänge, bei denen jeweils Datenbankaufrufe durchgeführt werden Datensatz.
  • Single-Execution-Ansatz: Effizient für SELECT und DELETE-Abfragen oder für UPDATE-Vorgänge, bei denen alle Datensätze auf ähnliche Weise geändert werden.

Vorteile von Prepared Statements:

  • Erhöhte Sicherheit gegen SQL-Injection-Angriffe .
  • Verbesserte Effizienz durch Kontoauszugserstellung und reduzierte Datenübertragung.
  • Verhinderung von Wiederholte vollständige SQL-String-Übertragungen an die Datenbank.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich effizient mehrere MySQL-Datensätze mithilfe eines Integer-Arrays in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage