How to use an array of values from PHP in the 'IN' clause of mysql query?

后端 未结 3 2010
离开以前
离开以前 2021-01-23 02:17
//get all id\'s of ur friend that has installed your application
 $friend_pics=$facebook->api( array( \'method\' => \'fql.query\', \'query\' => \"SELECT uid FRO         


        
相关标签:
3条回答
  • 2021-01-23 02:41

    $friend_pics should be a string containing a comma separated list i.e. "1, 2, 3, 4". If it is not, then your second query will always fail.

    0 讨论(0)
  • 2021-01-23 02:56

    Why don't you convert that array into a string of long list of your values unless array is huge size.

        $ids    = array(2, 4, 6, 8);
    $params = implode(",", array_fill(0, count($ids), "?"));
    
        $result="SELECT * FROM fb_user WHERE user_id IN($params) ORDER BY oldscore DESC LIMIT 0,10";
    db_execute($result);
    
    0 讨论(0)
  • 2021-01-23 03:01

    There is no native support for that. Even the bound parameter APIs do not allow to use arrays for IN clauses. You have to construct the query with some helper code:

    $friend_pics = array_map("mysql_real_escape_string", $friend_pics);
    $friend_pics = "'" . implode("', '", $friend_pics) . "'";
    "SELECT * WHERE user_id IN ($friend_pics)              "
    

    A simpler alternative would be mysqls FIND_IN_SET() however:

    $friend_pics = mysql_real_escape_string(implode(",", $friend_pics));
    "SELECT * FROM fb_user WHERE find_in_set(user_id,'$friend_pics')     "
    
    0 讨论(0)
提交回复
热议问题