为什么php / mysql不能计数whitin强大Pro无法工作?

问题描述 投票:1回答:2

我想获取数据库中的条目数,以确定当前用户是否已有条目。结果应该是我可以在其他地方使用的数字。以下代码似乎无效。有人可以帮我吗?

...

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”。

php mysql wordpress formidable
2个回答
0
投票

您正在尝试返回一列,但未根据this link指定列名。

但是,我想您想做的是计算返回的行数,也许吗?快速浏览Wordpress Developer reference site上所有可用的选项。

也许像这样的东西行得通吗?

$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(*)返回返回的行数。


0
投票

詹姆斯,谢谢您的输入。我让它正常工作:

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' );

© www.soinside.com 2019 - 2024. All rights reserved.