Wordpress更新mysql表

Gab*_*tos 7 mysql sql wordpress sql-update

我正在为Wordpress编写一个插件,它应该检查一个mysql条目是否已经存在.
如果它不存在,Wordpress应该将条目插入表中.这部分按我的预期工作.
但是,如果mysql表中已经有一个条目,Wordpress应该更新表,但这不起作用.

我正在使用的代码是以下代码:

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time=$current_timestamp WHERE userid=$userid"));
Run Code Online (Sandbox Code Playgroud)

我在这个查询中使用的变量是正确的,因为它们被成功地用于插入表中,但是在某些地方,更新函数出现了问题.

有人可以告诉我这里我做错了什么吗?
什么是正确的方法?

Joh*_*Woo 9

列的值time必须用括号括起来single quote

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time='$current_timestamp' WHERE userid=$userid"));
Run Code Online (Sandbox Code Playgroud)

  • 但查询很容易受到"SQL注入"的攻击,请花时间阅读文章以防止它出现.[**如何防止PHP中的SQL注入**](http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection) (3认同)

小智 5

$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();
Run Code Online (Sandbox Code Playgroud)

上面的解决方案对我有用,因为即使传入正确的数字和字符串格式,使用 $wpbd->query($wpbd->prepare()) 语句也不起作用。
var_dump() 函数的目的是查看查询执行出错的地方。它打印出正在传递的查询和值。当然,使用 $wpdb->flush() 函数会清除缓存以便执行下一个查询。