我想问题可能出在你的通配符上。因为您试图在prepare中使用通配符,这需要%s
, WPDP不知道通配符之间的区别%
和占位符%
. 使用此答案作为参考:How to use wildcards in $wpdb queries using $wpdb->get_results & $wpdb->prepare? 您必须双重转义通配符:
$sql = $wpdb->prepare( "SELECT link_id FROM $wpdb->links WHERE link_url LIKE \'%%%s%%\'", $_SERVER[\'HTTP_REFERER\'] );
还有一个问题是,通配符在单引号之外
\'
. 希望这对你有用。
至于错误,试试这个,我可以更新link_rating
虽然我不熟悉wpstats,但使用相同的方法:
$wpdb->query( "UPDATE $wpdb->wptstats SET impressions = impressions+1 WHERE link_id = $lid" );
使用更新函数代替查询:
$wpdb->update(
$wpdb->wptstats ,
array( \'impressions\' => \'impressions\' + 1 ),
array( \'link_id\' => $lid ),
array( \'%d\' )
);