Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql查询在phpmyadmin中工作-在php中不工作_Php_Mysql_Wordpress - Fatal编程技术网

sql查询在phpmyadmin中工作-在php中不工作

sql查询在phpmyadmin中工作-在php中不工作,php,mysql,wordpress,Php,Mysql,Wordpress,我将要编写的WordPress插件中有一个函数(我的第一个),它应该检查给定的ID是否属于某个角色的用户('dance\u couple'在本例中为) $sc\u user\u id是在缩短代码中传递的id function user_is_dance_couple($sc_user_id){ global $wpdb; $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->userm

我将要编写的
WordPress插件中有一个函数(我的第一个),它应该检查给定的ID是否属于某个角色的用户(
'dance\u couple'在本例中为

$sc\u user\u id
是在缩短代码中传递的id

function user_is_dance_couple($sc_user_id){
   global $wpdb;
   $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->usermeta WHERE user_id = %d AND meta_value LIKE `%dance_couple%`", $sc_user_id));
   if($count == 1){ return true; } else { return false; }
}

if (user_is_dance_couple(1)) {
  // here comes what should be done if the user has the right role
}
问题:奇怪的是,我复制了函数()的一个更简单版本,并对其进行了修改。所以我唯一改变的是一些sql代码(在sql中可以正常工作),函数也可以正常工作——我不知道我做错了什么

我已经试过了:

  • 将单引号更改为双引号“`”之间的内容
  • 取出sting并将其添加到变量中
  • 在列之前添加表名

  • 谢谢你的帮助

    不需要SQL查询。你可以这样做:

    $user_id = 1; # or whatever user you need
    $role_to_find = 'dance_couple';
    
    $user = get_userdata( $user_id );
    
    if( false !== $user ){
        # User found, do your stuff
        $user_roles = $user->roles;
        # var_dump( $user_roles );
    
        if( in_array( $role_to_find, $user_roles ) ){
            echo 'User has the role';
        }else {
            echo 'User does not have the role';
        }
    }else{
        echo 'User not found';
    }
    

    我认为您不能在查询和报价中使用全局对象$wpdb。我要做的是创建另一个变量,并将$wpdb->usermeta的值放入该变量中

    这样:

    $user = $wpdb->usermeta;
    global $wpdb;
    $query = "SELECT COUNT(*) FROM %d WHERE user_id = %d AND meta_value LIKE `%dance_couple%`";
    $count = $wpdb->get_var($wpdb->prepare($query, $user, $sc_user_id));
    
    或长版本:

    $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM %d WHERE user_id = %d AND meta_value LIKE `%dance_couple%`", $user, $sc_user_id));
    
    查询的语法看起来正确,
    试着这样做

    $string
    没有做任何事情,所以它应该是removed@maya请从您的查询中删除
    $string
    变量,然后检查它好吗?
    %dance\u-couple%
    应该是“
    %dance\u-couple%
    ”“$string变量已消失-但这不是问题。。。之前没有(如列表中所述,这只是几次尝试中的一次)@itzmukeshy7-我尝试过-没有效果:(非常感谢-我已经有了类似的东西-但在“in_数组”中没有第二个变量-可能是纯文本杀死了它或者我犯了其他错误。