为什么 Formidable Pro 中的 PHP/MySQL COUNT 不起作用?



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

...
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"。

您正在尝试返回列,但未指定列名称,如此链接所示。

但是,我认为您更愿意做的是计算返回的行数,也许? 在Wordpress Developer Reference网站上快速浏览所有可用的选项。

也许这样的事情会起作用?

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

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

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

最新更新