首页 > 解决方案 > 为什么 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”。

标签: phpmysqlwordpressformidable

解决方案


您正在尝试返回一列,但您没有按照此链接指定列名。

但是,我认为您更愿意做的是计算返回的行数,也许?快速浏览一下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(*) 返回返回的行数。


推荐阅读