Mysql Wordpress-使用$wpdb->;更新和限制1
这可能是一个愚蠢的问题,但我尝试使用Mysql Wordpress-使用$wpdb->;更新和限制1,mysql,wordpress,Mysql,Wordpress,这可能是一个愚蠢的问题,但我尝试使用$wpdb->update而不是$wpdb->query,但我不确定如何使用limit1。所以不是 $wpdb->query("update {$wpdb->prefix}vp_pms_group_users set read = '1', seen = '1', time_seen = '{$date_time_seen}' where message_id = '{$last_message_id}' and group_id = '{$gro
$wpdb->update
而不是$wpdb->query,但我不确定如何使用limit1。所以不是
$wpdb->query("update {$wpdb->prefix}vp_pms_group_users set read = '1', seen = '1', time_seen = '{$date_time_seen}' where message_id = '{$last_message_id}' and group_id = '{$group_id}' and to_username = '{$session_uid}' and read = '0' limit 1");
我试过了
$wpdb->update($wpdb->prefix . "vp_pms_group_users", array(
'read' => '1',
'seen' => '1',
'time_seen' => $date_time_seen,
),
array(
'message_id' => $last_message_id,
'group_id' => $group_id,
'to_username' => $session_uid,
'read' => '0',
),
LIMIT 1 //????
);
我应该在数组之后还是在数组内部使用limit?
谢谢。这里有一个答案,它并不漂亮,但基于查看
$wpdb
中的方法链,这可能是实现您所追求的目标的唯一方法,并且仍然使用$wpdb->update()
第1步。
使用稍后将要替换的唯一参数进行更新,请注意,这必须是传递给WHERE
子句的最后一个参数,否则将其替换为LIMIT 1
将导致SQL语句中出现语法错误
比如:
$wpdb->update(
$wpdb->prefix . "vp_pms_group_users",
array(...),
array(
...
'MyReplacementLimit' => 1
)
);
这将为您提供如下SQL语句:
UPDATE vp_pms_group_users SET ... WHERE ... AND MyReplacementLimit = 1;
第二步:
现在,您可以使用query
过滤器将该伪子句替换为limit
add_filter('query', function ($query) {
return str_replace('AND MyReplacementLimit = 1', 'LIMIT 1', $query);
});
这是未经测试的,完全基于对$wpdb
中可用代码的阅读。它可能需要一些调整才能正常工作
更简单的解决方案:
您可以直接使用SQL,只要您使用
$wpdb->prepare()
,它可能比上述方法更容易阅读,也更容易理解。不可能,如果您查看insert
方法中的代码,它会运行以下查询:UPDATE$table SET$fields WHERE$conditions
没有可用于添加限制的筛选器。进一步查看后,查询
方法中有一个筛选器,该筛选器由插入
方法直接调用,要筛选出确切的查询以添加限制可能会有困难,但它是可用的<代码>$query=apply_过滤器('query',$query)代码>。祝你好运,谢谢!我会试着用你的方法!