这个wpdb更新有什么问题?

时间:2013-02-16 作者:michael

今晚我读了很多文档,不明白为什么这不起作用。很明显我错过了什么。

$newstr = "18,19";
$defid = 1;
$table = "wp_tablename";
$data = "array( \'somecol\' => \'".$newstr."\' )";
$where = "array( \'id\' => ".$defid." )";

if ($wpdb->update( $table, $data, $where) === FALSE)
{
    echo "failure";
}
else
{
    echo "success";
}
每次都是假的。有什么线索吗?我错过了什么?我确实尝试在何处使用format\\u,但也没有成功。

2 个回复
SO网友:Milo

您正在创建$data$where 值作为字符串,而不是数组。

这是:

$data = "array( \'somecol\' => \'".$newstr."\' )";
$where = "array( \'id\' => ".$defid." )";
应为:

$data = array( \'somecol\' => $newstr );
$where = array( \'id\' => $defid );

SO网友:Max Yudin

不要使用“等同”运算符===, 简单使用if ($wpdb->update(.......) {.......} 因为a boolean value is passed on to a control structure. 看见PHP Comparison Operators. 有关字符串和数组,请参见Milo的答案。

结束

相关推荐

无法从wpdb查询中获得预期结果

我第一次尝试使用$wpdb进行直接DB查询时遇到了一些问题。我正在使用WordTwit插件,并尝试检索该插件创建的当前帖子的短url扩展名。这是我的代码:global $wpdb; $short = $wpdb->get_var(\"SELECT url FROM $wpdb->prefix.\'tweet_url\' WHERE post_id = \'$post->ID\' \"); 据我所知,这应该在“post\\u id”等于当前帖子id的行中提取“url”的值