[英]How to use an array of values from PHP in the 'IN' clause of mysql query?
//get all id's of ur friend that has installed your application
$friend_pics=$facebook->api( array( 'method' => 'fql.query', 'query' => "SELECT uid FROM user WHERE uid IN(SELECT uid2 from friend WHERE uid1='$user') AND is_app_user = 1" ) ); // this query work fine
//your top10 friends in app
$result="SELECT * FROM fb_user WHERE user_id IN($friend_pics) ORDER BY oldscore DESC LIMIT 0,10";
db_execute($result);
我想从存储在oldscore中的数据库中检索十个最佳得分手,但是在第二个查询中,阵列名称$ friend_pics无法正常工作,我想,请帮我谢谢
没有本地支持。 甚至绑定参数API也不允许对IN
子句使用数组。 您必须使用一些辅助代码来构造查询:
$friend_pics = array_map("mysql_real_escape_string", $friend_pics);
$friend_pics = "'" . implode("', '", $friend_pics) . "'";
"SELECT * WHERE user_id IN ($friend_pics) "
一个更简单的选择是mysqls FIND_IN_SET()
但是:
$friend_pics = mysql_real_escape_string(implode(",", $friend_pics));
"SELECT * FROM fb_user WHERE find_in_set(user_id,'$friend_pics') "
除非数组很大,否则为什么不将该数组转换为一长串的值列表。
$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);
$friend_pics
应该是包含逗号分隔列表(即“ 1、2、3、4”)的字符串。 如果不是,那么您的第二个查询将始终失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.