Nic*_*tti 5 php mysql prepared-statement
我需要做一个简单的查询
$array_of_ids = array();
//poulate $array_of_ids, they don't come from another db but from Facebook
//so i can't use a subquery for the IN clause
$wpdb->prepare("SELECT id from table where id IN (%d, %d)", $array_of_ids [0], $array_of_ids [1]);
问题是,如果我在数组中有200个元素,处理这个问题的正确方法是什么?我必须用200手动构建查询%d吗?我需要这个查询,因为我必须与facebook数据"同步"我的数据库,我必须检查我在数据库中的用户是否存在,更新那些存在的,插入新用户并删除那些不是我的朋友.
如果您确定数组元素是数字:
$wpdb->prepare("SELECT id FROM table WHERE id IN ("
  . implode(',',$array_of_ids) . ")");
否则,可以使用vsprintf的形式prepare传入参数数组:
$wpdb->prepare("SELECT id FROM table WHERE id IN ("
  . str_repeat("%d,", count($array_of_ids)-1) . "%d)" , $array_of_ids);