Сделать запрос SQL с помощью wpdb в WordPress

вы можете помочь мне со следующей попыткой SQL-запроса. Этот запрос определяет, выполнял ли человек действие формы в течение 24 часов.

Это SQL:

SELECT min(TIMESTAMPDIFF(DAY, `fecha_inscripcion`, now())) FROM `wp_cf7dbplugin_submits` WHERE `field_name`="cedula" and `field_value` = "1144093762" 

Это результат:

 min(TIMESTAMPDIFF(DAY, `fecha_inscripcion`, now())) 5 

введите описание изображения здесь

Теперь, в WordPress, я сделал это

 global $wpdb; $day = 'DAY'; $now = 'now()'; $fieldvalue = '1144093762'; $fieldname = 'cedula'; $post_count = $wpdb->get_var(" SELECT min(TIMESTAMPDIFF($day,$wpdb->cf7dbplugin_submits.fecha_inscripcion, $now)) FROM $wpdb->cf7dbplugin_submits WHERE field_name=$fieldname and field_value=$fieldvalue"); print_r($post_count); echo "Resultado"+$post_count; 

Но он возвращает меня в 0, когда в этом случае должно быть 5.

спасибо

Основная проблема заключается в том, как вы указываете имя настраиваемой таблицы (например, $wpdb->cf7dbplugin_submits ).

$wpdb знает только о «встроенных» таблицах при доступе к имени таблицы через $wpdb->xxx . Чтобы указать доступ к имени пользовательской таблицы, используйте {$wpdb->prefix}custom_table_name .

Другая вещь, которую я замечаю, заключается в том, что в целях безопасности вы никогда не должны использовать интерполированные переменные в выражении SQL, переданные любому из $wpdb запроса $wpdb . Вместо этого вы должны использовать $ wpdb-> prepare () .

Объединение этих двух вещей приводит к:

 $sql = $wpdb->prepare ( "SELECT min(TIMESTAMPDIFF($day,`fecha_inscripcion`, $now)) FROM {$wpdb->prefix}cf7dbplugin_submits WHERE field_name=%s and field_value=%s", $fieldname, $fieldvalue ) ; $post_count = $wpdb->get_var ($sql) ; 

Я прикладываю решение, благодарю Paul 'Sparrow Hawk' Biron

 global $wpdb; $day = 'DAY'; $now = 'now()'; $fieldname = "cedula"; $fieldvalue = "1144092"; // set the meta_key to the appropriate custom field meta key $sql = $wpdb->prepare ( "SELECT min(TIMESTAMPDIFF($day,fecha_inscripcion, $now)) FROM {$wpdb->prefix}cf7dbplugin_submits WHERE field_name=%s and field_value=%s", $fieldname, $fieldvalue ); $post_count = $wpdb->get_var($sql) ; echo "<p>User count is {$post_count}</p>";