我已将旧版Wordpress(3.0.1)更新为4.4.2。一切都有效,除了一个插件,它有这种风格的所有查询。我使用自定义页面来测试一个简单的查询,并可以验证查询没有返回任何内容:
$query = "SELECT code FROM wp_kk_video WHERE id = '0'";
$result = mysql_query ($query);
然后我用以下内容替换了该查询:
$query = $wpdb->get_row( "SELECT code FROM wp_kk_video WHERE id = '0'" );
$result = $query->code;
它完美无缺。
那么为什么Wordpress会停止执行旧类型的mysql_query
查询?
答案 0 :(得分:2)
mysql_ *已被弃用,现在它不适用于较新版本的Php。
<强>建议:强>
使用PHP 5.3+或5.4+(PHP 5.5+ PHP 5.6+ PHP 7.0+ PHP 7.1+目前不支持。)
或者对WordPress 4.4使用mysqli_*
扩展名。
或者根据wordpress $wpdb->get_row
进行最后一次更改查询。
<强> PHP Unsupported Branches 强>
<强> WordPress Forum 强>
<强> Wpdb Class References: 强>
答案 1 :(得分:2)
插件应该始终使用wpdb类/变量抽象,这样像你的更新不会破坏你的博客,因为Wordpress代码已经查找了哪些mysql *函数可用。
他们还提供准备好的语句,用于防止SQL注入攻击。如果示例中的id参数是用户提供的值,因此可能是恶意输入,则应将其重写为以下内容以保证安全:
$wpdb->query( $wpdb->prepare(
"SELECT code FROM wp_kk_video WHERE id = '%d'",
$video_id
) );