我正在从3.7升级一个古老的Wordpress网站。它有一些SQL查询请求,在3.9以上版本之后无法运行,您现在必须通过$WPDB连接到DB(https://codex.wordpress.org/Class_Reference/wpdb). 我对此进行了初步尝试,但挂断了mysql\\u fetch\\u array部分的连接,也不清楚我所做的是否正确。mysql\\u fetch\\u数组似乎需要使用get\\u结果(https://developer.wordpress.org/reference/classes/wpdb/get_results/).
我完全意识到,这不是一种理想的方式来实现这一点,并完全打算使一切现代化,但长话短说,如果可能的话,能够在这种混乱的旧范式中解决这一问题将非常有帮助。
附件是原始代码,然后是我的尝试(还添加了v2尝试)。谢谢你看一看。
SQL:
$sql = "SELECT wp_acf_values.value FROM wp_acf_values, wp_acf_fields WHERE wp_acf_fields.post_id = \'620\' AND wp_acf_fields.id = wp_acf_values.field_id ORDER BY wp_acf_fields.order_no";
$result = mysql_query($sql) or die(\'Content was not loaded. Please refresh your page.\');
$counter = 0;
while($post = mysql_fetch_array($result)) {
$sqlSecond = "SELECT meta_value FROM wp_postmeta WHERE meta_id = \'".$post[\'value\']."\'";
$result1 = mysql_query($sqlSecond) or die(\'Content was not loaded.\');
while($post1 = mysql_fetch_array($result1)) {
$data[$counter] = $post1[\'meta_value\'];
$counter++;
}
}
// get image
$sql = "SELECT meta_value FROM wp_postmeta WHERE post_id = \'".$data[\'1\']."\' AND meta_key = \'_wp_attached_file\'";
$result = mysql_query($sql) or die(\'Content was not loaded.\');
$counter = 0;
while($post = mysql_fetch_array($result)) {
$imgURL = $post[\'meta_value\'];
}
<小时>WPDB v1:
global $wpdb;
$sql = $wpdb->prepare( "SELECT wp_acf_values.value FROM wp_acf_values, wp_acf_fields WHERE wp_acf_fields.post_id = \'620\' AND wp_acf_fields.id = wp_acf_values.field_id ORDER BY wp_acf_fields.order_no" );
$result = $wpdb->query ( $sql ) or die(\'Content was not loaded.\');
$counter = 0;
while($post = mysql_fetch_array($result)) {
$sqlSecond = $wpdb->prepare( "SELECT meta_value FROM wp_postmeta WHERE meta_id = %s", $post[\'value\'] );
$result1 = $wpdb->query ( $sqlSecond ) or die(\'Content was not loaded.\');
while($post1 = mysql_fetch_array($result1)) {
$data[$counter] = $post1[\'meta_value\'];
$counter++;
}
}
// get image
$sql = $wpdb->prepare( "SELECT meta_value FROM wp_postmeta WHERE post_id = %s AND meta_key = \'_wp_attached_file\'", $data[\'1\'] );
$result = $wpdb->query ( $sql ) or die(\'Content was not loaded.\');
$counter = 0;
while($post = mysql_fetch_array($result)) {
$imgURL = $post[\'meta_value\'];
}
<小时>WPDB v2:
global $wpdb;
$sql = $wpdb->prepare( "SELECT wp_acf_values.value FROM wp_acf_values, wp_acf_fields WHERE wp_acf_fields.post_id = \'620\' AND wp_acf_fields.id = wp_acf_values.field_id ORDER BY wp_acf_fields.order_no" );
$result = $wpdb->get_results ( $sql ) or die(\'Content was not loaded.\');
$counter = 0;
foreach ($result as $post ) {
$sqlSecond = $wpdb->prepare( "SELECT meta_value FROM wp_postmeta WHERE meta_id = %s", $post->value );
$result1 = $wpdb->get_results ( $sqlTitle ) or die(\'Content was not loaded.\');
foreach ( $result1 as $post1 ) {
$data[$counter] = $post1->meta_value;
$counter++;
}
}
// get image
$sql = $wpdb->prepare( "SELECT meta_value FROM wp_postmeta WHERE post_id = %s AND meta_key = \'_wp_attached_file\'", $data[\'1\'] );
$result = $wpdb->get_results ( $sql ) or die(\'Content was not loaded.\');
$counter = 0;
foreach ( $result as $post ) {
$imgURL = $post->meta_value;
$counter++;
}