我有一个MySQL查询do 在PHPMyAdmin工作:
set @ROW = 0;UPDATE `wp_wpsstm_subtracks` SET `subtrack_order` = @ROW := @ROW+1 WHERE tracklist_id=\'176226\' ORDER BY `subtrack_time` ASC
我想在Wordpress中使用它:
$querystr = $wpdb->prepare("set @ROW = 0;UPDATE `$subtracks_table` SET `subtrack_order` = @ROW := @ROW+1 WHERE tracklist_id=\'%d\' ORDER BY `subtrack_time` ASC", $this->post_id );
return $wpdb->query($querystr);
但它引发了一个语法错误:
WordPress数据库错误Erreur de syntax près de’UPDATEwp_wpsstm_subtracks
设置subtrack_order
= @行:=@行+1,其中trackli\'a la ligne 1用于查询集@行=0;更新wp_wpsstm_subtracks
设置subtrack_order
= @行:=@行+1,其中tracklist\\u id=\'176226\'排序依据subtrack_time
ASC公司
我怎样才能做到这一点?
谢谢
SO网友:gordie
如果我理解正确,这是不可能的(两个查询而不是一个查询)。我最终陷入了一个悲伤而耗时的循环…:/
//get subtracks
$querystr = $wpdb->prepare("SELECT subtrack_id FROM `$subtracks_table` WHERE tracklist_id=\'%d\' ORDER BY `subtrack_time` ASC",$this->post_id);
if ( !$ids = $wpdb->get_col($querystr) ) return;
//update order
$i = 0;
foreach($ids as $id){
$i++;
$wpdb->update(
$subtracks_table, //table
array(\'subtrack_order\'=>$i), //data
array(\'subtrack_id\'=>$id) //where
);
}