Wordpress 更新 mysql 表
Posted
技术标签:
【中文标题】Wordpress 更新 mysql 表【英文标题】:Wordpress update mysql table 【发布时间】:2012-12-05 20:44:53 【问题描述】:我正在为 Wordpress 编写一个插件,它应该检查 mysql 条目是否已经存在。 如果它不存在,Wordpress 应该将条目插入到表中。这部分按我的预期工作。 但是,如果 mysql 表中已经有一个条目,Wordpress 应该更新该表,但这不起作用。
我使用的代码如下:
$wpdb->query($wpdb->prepare("UPDATE $table_name SET time=$current_timestamp WHERE userid=$userid"));
我在这个查询中使用的变量是正确的,因为它们被成功地用于插入到表中,但是在更新函数的某个地方出现了问题。
谁能告诉我我在这里做错了什么? 解决这个问题的正确方法是什么?
【问题讨论】:
【参考方案1】:time
列的值必须用single quote
括起来
$wpdb->query($wpdb->prepare("UPDATE $table_name SET time='$current_timestamp' WHERE userid=$userid"));
【讨论】:
非常感谢!我盯着自己看的东西,我预计会更复杂。现在完美运行。 但是SQL Injection
的查询容易受到攻击,请花点时间阅读文章以防止它。 How to prevent SQL injection in php
感谢您提供执行更新查询的最简单方法【参考方案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->query($wpbd->prepare()) 即使传入正确的数字和字符串格式,语句也不起作用。 var_dump() 函数的目的是查看查询的执行位置 出错。它打印出查询和传递的值。当然使用 $wpdb->flush() 函数清除缓存以供下一个要执行的查询。
【讨论】:
【参考方案3】:示例:
将用户(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
【讨论】:
【参考方案4】: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');
【讨论】:
【参考方案5】:很简单
global $wpdb;
$execut= $wpdb->query("UPDATE `IK_users` SET `user_nicename` = 'amit' WHERE `IK_users`.`ID` = 19");
var_dump($execut);
'IK_users'是自定义表名,替换成你自己的表名,比如'wp_users'
【讨论】:
以上是关于Wordpress 更新 mysql 表的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress如何通过用户ID AND type_operation从MySQL表的列中回显SUM