web-dev-qa-db-fra.com

Wordpress met à jour la table mysql

Je suis en train d'écrire un plugin pour Wordpress, qui devrait vérifier si une entrée mysql existe déjà.
S'il n'existe pas, Wordpress devrait insérer cette entrée dans le tableau. Cette partie fonctionne comme prévu.
Cependant, s'il existe déjà une entrée dans la table mysql, Wordpress doit mettre à jour la table, mais cela ne fonctionne pas.

Le code que j'utilise pour cela est le code suivant:

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time=$current_timestamp WHERE userid=$userid"));

Les variables que j'utilise dans cette requête sont correctes, car elles ont été utilisées avec succès pour insérer dans la table, mais quelque part, quelque chose se passe mal avec la fonction de mise à jour.

Quelqu'un peut-il s'il vous plaît me dire ce que je fais mal ici?
Quelle est la bonne façon de s'y prendre?

7
Gabi Barrientos

la valeur de la colonne time doit être entourée de single quote

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time='$current_timestamp' WHERE userid=$userid"));
9
John Woo
$result = $wpdb->update('westend_areaofficers', array('officerOrder' => $memberOrder,
'officerTitle' => $memberTitle, 'officerName' => $memberName, 'officerPhone' => 
 $memberPhone), array('officerId' => $memberId), array('%d','%s', '%s', '%s'),
 array('%d'));

if($result > 0){
echo "Successfully Updated";
}
else{
  exit( var_dump( $wpdb->last_query ) );
}
$wpdb->flush();

La solution ci-dessus est ce qui a fonctionné pour moi parce que l’utilisation de l’instruction $ wpbd-> query ($ wpbd-> prepare ()) Ne fonctionnait pas, même lorsqu’on passait les formats corrects de nombres et de chaînes.
Le but de la fonction var_dump () est de voir où l'exécution de la requête S'est mal passée. Il affiche la requête et les valeurs transmises. Bien sûr, en utilisant , La fonction $ wpdb-> flush () efface le cache pour l'exécution de la requête suivante.

2
Marcus
UPDATE wp_options SET option_value = replace(option_value, 'http://www.example.com', 'http://localhost/test-site') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.example.com', 'http://localhost/test-site');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.example.com','http://localhost/test-site');
1
Savan Dholu

Exemple:

change l'utilisateur (dont l'ID est 546) nicename en Harde_Bande

$execut= $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->users SET user_nicename = %d WHERE ID = %s", "Harde_Bande", 546 ) );
var_dump($execut);

En savoir plus sur: http://codex.wordpress.org/Class_Reference/wpdb#Examples

0
T.Todua