почему php / mysql COUNT не работает в Formidable Pro? - PullRequest
1 голос
/ 09 февраля 2020

Я хочу получить количество записей в базе данных, чтобы установить sh, если текущий пользователь уже имеет запись. результат должен быть числом, которое я могу использовать в другом месте. Следующий код не работает. Кто-нибудь может мне помочь?

...

add_filter('frm_validate_field_entry', 'een_maal', 10, 3);
function een_maal($errors, $posted_field, $posted_value){
if(!is_admin()){
global $wpdb, $user_ID;
//  $entry_id = (isset($_POST['id'])) ? $_POST['id'] : 0;

$paginatitel = do_shortcode("[page_slug]");

$entries = $wpdb->get_col($wpdb->prepare("SELECT * FROM ". 
$wpdb->prefix ."frm_item_metas em LEFT JOIN ". 
$wpdb->prefix ."frm_items e ON (em.item_id = e.id) 
WHERE 
form_id=23 AND
em.field_id= 591 AND 
em.meta_value=$paginatitel AND 
user_id = $user_ID
"));

if(count($entries) <= 0) //limit to one entry per option.
$errors = 'You have already selected that option';
}
return count($entries);
echo count($entries);
}
add_shortcode( 'test', 'een_maal' );

...

Результат, кажется, всегда "0".

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Джеймс, спасибо за ваш вклад. у меня это работает:

function een_maal($errors, $posted_field, $posted_value){
    global $wpdb, $user_ID;
    $paginatitel = do_shortcode("[page_slug]");
$UID = $_SESSION['user_id'];
$count_query = $wpdb->prepare("select count(*) from YYC_frm_item_metas em LEFT JOIN YYC_frm_items e ON (em.item_id = e.id)
    WHERE 
        form_id = 23 AND
        user_id = '$user_ID' AND
        em.field_id = 591 AND 
        em.meta_value = '$paginatitel'
");
         $num = $wpdb->get_var($count_query);
         return $num;
}
add_shortcode( 'test', 'een_maal' );

0 голосов
/ 09 февраля 2020

Вы пытаетесь вернуть столбец, но вы не указываете имя столбца, согласно этой ссылке .

Однако я думаю, что вы скорее всего захотите сделать это посчитать количество возвращаемых строк, возможно? Кратко рассмотрите все доступные вам варианты на Справочном сайте разработчика Wordpress .

Может быть, что-то подобное будет работать?

$entries = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM ". 
$wpdb->prefix ."frm_item_metas em LEFT JOIN ". 
$wpdb->prefix ."frm_items e ON (em.item_id = e.id) 
WHERE 
form_id=23 AND
em.field_id= 591 AND 
em.meta_value=$paginatitel AND 
user_id = $user_ID
"));

Я изменил get_col на get_var и попытался count (*), чтобы вернуть количество возвращаемых строк.

...