Wordpress update mysql table

2019-04-06 22:48发布

I am writing a plugin for Wordpress, which should check if a mysql entry already exists.
If it does not exist Wordpress should insert the entry into the table. This part works as I expected.
However, if there already is an entry in the mysql table, Wordpress should update the table, but this does not work.

The code I am using for this is the following code:

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

The variables I use in this query are correct, because they are successfully used to insert into the table, but somewhere along the way something goes wrong with the updating function.

Can somebody please tell me what I am doing wrong here?
What is the right way to go about this?

4条回答
forever°为你锁心
2楼-- · 2019-04-06 23:17

Example:

change user's (whose ID is 546) nicename to Harde_Bande

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

Learn more at: http://codex.wordpress.org/Class_Reference/wpdb#Examples

查看更多
你好瞎i
3楼-- · 2019-04-06 23:19

the value of column time must be enclosed with single quote

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time='$current_timestamp' WHERE userid=$userid"));
查看更多
Explosion°爆炸
4楼-- · 2019-04-06 23:19
$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();

The above solution is what worked for me because using the $wpbd->query($wpbd->prepare()) statement didn't work even when passing in the correct number and string formats.
The purpose of the var_dump() function is to see where the execution of the query went wrong. It prints out the query and values being passed. Of course using the $wpdb->flush() function clears the cache for the next query to execute.

查看更多
仙女界的扛把子
5楼-- · 2019-04-06 23:38
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');
查看更多
登录 后发表回答