Wie man mehrere Zeilen mit $ wpdb-> update aktualisiert

Ich habe dynamische Felder zum Hinzufügen / Entfernen in einer Frontend-Post-Einreichungsseite erstellt. Mit $ wpdb-> insert funktioniert das System einwandfrei.

Ich habe auch eine Entwurfsseite am Frontend erstellt. Auf dieser Seite möchte ich, dass diese dynamischen Felder aktualisiert werden. Ich habe versucht, $ wpdb-> update, aber es aktualisiert nur das letzte Feld. Kurz gesagt, ich möchte mehrere Zeilen mit einem einzigen Klick aktualisieren.

mein Code:

$project_id = $_SESSION['project_id']; global $wpdb; $reward_ids = $wpdb->get_results("SELECT * FROM wpxa_rewards WHERE project_id = $project_id"); foreach($reward_ids as $reward_id); $r_id = $reward_id->ID; $count = count( $project_reward_title ); for ( $i = 0; $i update( 'wpxa_rewards', array( 'reward_title' => "$project_reward_title[$i]", 'reward_description' => "$project_reward_description[$i]", 'reward_amount' => "$project_reward_amount[$i]", 'reward_shipping' => "$project_reward_shipping[$i]", 'est_date' => "$project_est_date[$i]" ), array( 'ID' => $r_id ), array( '%s', '%s', '%d', '%s', '%s' ), array( '%d' ) ); } 

Plz Hilfe .. Danke

Solutions Collecting From Web of "Wie man mehrere Zeilen mit $ wpdb-> update aktualisiert"

Es ist ein bisschen ein Stich in die Dunkelheit, aber ich bin ziemlich zuversichtlich, dass das Problem ist Ihre foreach-Schleife. Es ist kaputt (es wird nichts ausgeführt, weil nur eine leere statement ( ; ) betroffen ist und Sie werden wahrscheinlich wollen, dass es einen Block hat, der den Rest des Codes enthält.

Als Beispiel:

 < ?php foreach(array(1, 2, 3) as $test); print $test . "\n"; 

druckt nur 3, während

 < ?php foreach(array(1, 2, 3) as $test) // note the lack of the semicolon. print $test . "\n"; 

wird eine Zeile für 1, 2 und 3 ausgeben. Als allgemeine Regel empfehle ich immer, explizit mit dem zu sein, was in einer Schleife wiederholt werden soll. Verwenden Sie geschweifte Klammern, z

 < ?php foreach(array(1, 2, 3) as $test) { print $test . "\n"; } 

Es ist leicht zu lesen und schützt Sie vor diesen Fehlern. Wenn Sie eine weitere Zeile in der Schleife hinzufügen müssen, fügen Sie sie einfach vor den schließenden geschweiften Klammern hinzu.

Dieser Code wird wahrscheinlich das sein, was Sie wollen.

 $project_id = $_SESSION['project_id']; global $wpdb; $reward_ids = $wpdb->get_results("SELECT * FROM wpxa_rewards WHERE project_id = $project_id"); foreach($reward_ids as $reward_id) { $r_id = $reward_id->ID; $count = count( $project_reward_title ); for ( $i = 0; $i < $count; $i++ ) { $wpdb->update( 'wpxa_rewards', array( 'reward_title' => $project_reward_title[$i], 'reward_description' => $project_reward_description[$i], 'reward_amount' => $project_reward_amount[$i], 'reward_shipping' => $project_reward_shipping[$i], 'est_date' => $project_est_date[$i] ), array( 'ID' => $r_id ), array( '%s', '%s', '%d', '%s', '%s' ), array( '%d' ) ); } }