2016-02-18 4 views
0

Работа традиционный запрос:преобразования в Sprintf() запрос

$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']; 
+0

Попробуйте выполнить эхо-сообщение $ post_id_qry и посмотреть, что он говорит. Затем запустите его в базе данных, чтобы убедиться, что вы получаете правильный запрос. –

+0

вы получаете правильный запрос, и ваш код прав, я думаю. –

+0

вам нужно убедиться, что вы получаете правильное значение в идентификаторе формы и правильном значении в таблице и других связанных с ним и где предложение. –

ответ

0

$wpdb->get_results() возвращает массив всех результатов запроса, а не только в одной строке. И по умолчанию строки являются объектами, а не ассоциативными массивами. Таким образом, вам необходимо:

echo $post_id[0]->meta_value; 

для отображения значения.

Если вы хотите, чтобы получить один ряд как ассоциативный массив, используйте:

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

Обратите внимание, что РГ не имеет ничего аналогичного mysql_fetch_array. Возможные значения get_row: ARRAY_A, что соответствует mysql_fetch_assoc и ARRAY_N, что соответствует mysql_fetch_row.

Смежные вопросы