WordPress的更新MySQL表(Wordpress update mysql table)

2019-08-04 06:17发布

我写的WordPress插件,应检查是否有mysql的条目已经存在。
如果它不存在的WordPress应该插入的进入表。 这部分工作如我所料。
但是,如果已经有在mysql表中的条目,WordPress的应该更新的表,但是这是行不通的。

我使用该代码,这是下面的代码:

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

我在此查询中使用的变量是正确的,因为他们成功地用于插入表,而是介于一路上出问题时更新功能。

有人能告诉我什么,我做错了什么?
什么是去了解这个正确的方式?

Answer 1:

的列中的值time必须被封闭single quote

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


Answer 2:

$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();

上述解决办法是什么工作对我来说,因为使用$ wpbd->查询($ wpbd->准备())语句甚至没有经过正确的数字和字符串格式时使用。
后续代码var_dump()函数的目的是为了看看那里的查询的执行出了问题。 它打印出的查询和传递价值。 当然,使用$ wpdb->的flush()函数清除为下一个查询执行的缓存。



Answer 3:

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');


Answer 4:

例:

更改用户(ID为546)nicename到Harde_Bande

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

了解更多: http://codex.wordpress.org/Class_Reference/wpdb#Examples



文章来源: Wordpress update mysql table