我想获取数据库中的条目数,以确定当前用户是否已有条目。结果应该是我可以在其他地方使用的数字。以下代码似乎无效。有人可以帮我吗?
...
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”。
您正在尝试返回一列,但未根据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(*)返回返回的行数。
詹姆斯,谢谢您的输入。我让它正常工作:
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' );