wpdb mehrere Zeilen aktualisieren?

Ich muss den Metawert aller Benutzer gleichzeitig ändern. Es scheint, dass es keine API gibt, außer die benutzerdefinierte databaseabfrage.

Das ist mein Code:

$matches = array('meta_key' => 'user_token'); $data = array('meta_value' => '100'); $wpdb->update( "$wpdb->usermeta", $data, $matches); 

Das Problem ist, dass nur ein Benutzer-Metawert aktualisiert wird, nicht alle Benutzer Meta-Wert mit dem Meta-Schlüssel von “user_token”.
Ist $ wpdb-> update limited, um nur eine Zeile zu aktualisieren? Oder habe ich etwas falsch gemacht?

Solutions Collecting From Web of "wpdb mehrere Zeilen aktualisieren?"

Ihr Code der wpdb-Methode ist korrekt. mögliche Gründe warum es scheitert …

  1. Sie haben nur einen Benutzer, dessen Übereinstimmung meta_key = ‘user_token’ ist
  2. andere functionalität ändert die Abfrage im Abfrage- Hook-Filter-Pfad.

debugge das endgültige SQL mit

 add_filter( 'query', 'query_report', 10000 ); function query_report($sql){ var_dump($sql); return $sql; } 

Vielleicht gibt es verschiedene Möglichkeiten für UPDATE :

1)

 < ?php define('WP_USE_THEMES', false); require( dirname( __FILE__ ) . '/wp-blog-header.php' ); global $wpdb; $matches = array('meta_key' => 'user_token'); $data = array('meta_value' => '100'); $wpdb->update( "$wpdb->usermeta", $data, $matches); ?> 

2)

 < ?php define('WP_USE_THEMES', false); require( dirname( __FILE__ ) . '/wp-blog-header.php' ); global $wpdb; $multi=array('34','55'); Foreach ($multi as $each){ $result = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->postmeta SET meta_value = '111' WHERE post_id = '$each'", "blahblah" ) ); var_dump($result); //OR update_post_meta($each, 'meta_key_NAME', 'YOUR_VALUE' ); } ?>