更新MySQL查询以使其再次运行

时间:2018-12-29 作者:fuzball1st

我继承了一个我的客户不想重建的旧WordPress站点。函数中有一个旧的MySQL查询。主题的php,应该将类别图像与类别放在一起。当然,随着时间的推移,WordPress已经更新,查询也不再有效。我希望有人能帮我建议如何更新这个。代码为:

function catImg($catId){

$data = mysql_fetch_object(mysql_query(\'SELECT * FROM `wp_ig_caticons` WHERE `cat_id` = "\'. $catId .\'"\'));

if($data->icon){
echo \'<img height="158" width="121" title="" alt="skyway" class="attachment-post-thumbnail wp-post-image" src="\'. site_url() .\'/\'. $data->icon .\'"/>\';
}
else{
echo \'<img height="158" width="121" alt="no-image" class="attachment-post-thumbnail wp-post-image" src="\'. site_url() .\'/wp-content/themes/sky-way/images/no-image.jpg"/>\';
}
}
提前谢谢你

1 个回复
最合适的回答,由SO网友:butlerblog 整理而成

mysql_fetch_object() 在PHP 5.5中被弃用,在PHP 7.0中被完全删除,这可能就是它不再适用于您的原因。使用WP函数总是更好的—通常它们是PHP(或其他地方)中某些内容的包装器,但通过使用WP包装器版本,它通常可以保护您免受抨击(因为WP方法可以更新以适应新的脚本语言更改)—这样您的核心代码就不需要更改。

尝试使用$wpdb->get_row(). 它与您拥有的几乎相同,但更“WordPressy”:

function catImg( $catId ){

    global $wpdb;

    $data = $wpdb->get_row( $wpdb->prepare( \'SELECT * FROM `\' . $wpdb->prefix . \'ig_caticons` WHERE `cat_id` =  %d\', absint( $catId ) ) );

    if ( $data->icon ) {
        echo \'<img height="158" width="121" title="" alt="skyway" class="attachment-post-thumbnail wp-post-image" src="\'. esc_url( site_url( esc_attr( $data->icon ) ) ) . \'"/>\';
    } else {
        echo \'<img height="158" width="121" alt="no-image" class="attachment-post-thumbnail wp-post-image" src="\'. site_url( \'/wp-content/themes/sky-way/images/no-image.jpg\' ) . \'"/>\';
    }
}

相关推荐

错误:MySQL意外关闭。运行WordPress的XAMPP本地会议

我在本地配置了一个xampp来运行wordpress。在修复一些问题时,我一定做错了什么,因为最后,我被mysql数据库中的以下日志卡住了。2015-11-10 15:26:56 10fc InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_mal