转换为sprintf()查询

时间:2016-02-18 05:42:22

标签: php mysql wordpress printf

使用传统查询:

$form_id = Caldera_Forms::get_field_data( '_entry_id', $form ); 
$post_id_qry = mysql_query("SELECT `meta_value` FROM wp_cf_form_entry_meta WHERE entry_id = '$form_id' and meta_key = 'ID'");
$post_id = mysql_fetch_array($post_id_qry);
echo $post_id['meta_value'];

现在,当我转换为sprintf()以使其更安全并返回空白时。我已经尝试了语法检查,它恢复了干净。有什么想法吗?

$form_id = Caldera_Forms::get_field_data( '_entry_id', $form );
global $wpdb;
$post_id_qry = sprintf("SELECT `meta_value` FROM %s WHERE entry_id = %d and meta_key = 'ID'", $wpdb->prefix . 'cf_form_entry_meta', $form_id ); 
$post_id = $wpdb->get_results($post_id_qry);
echo $post_id['meta_value'];

1 个答案:

答案 0 :(得分:0)

$wpdb->get_results()返回查询所有结果的数组,而不仅仅是一行。默认情况下,行是对象,而不是关联数组。所以你需要这样做:

echo $post_id[0]->meta_value;

显示值。

如果要将单行作为关联数组,请使用:

$post_id = $wpdb->get_row(ARRAY_A);
echo $post_id['meta_value'];

请注意,WP没有类似mysql_fetch_array的内容。 get_row的选项为ARRAY_A,类似mysql_fetch_assocARRAY_N,类似mysql_fetch_row