从php运行时SQL不工作
我正在尝试编写代码,基本上可以找到你在我的网站上的facebook好友。我成功地运行了phpmyadmin查询,但由于某种原因,当我尝试从php运行代码时,它不起作用 下面是php代码。每当我将$string echo放入mysql时,它都可以正常工作,但无论出于什么原因,在php中运行它时,查询都不会返回任何结果从php运行时SQL不工作,php,mysql,codeigniter,Php,Mysql,Codeigniter,我正在尝试编写代码,基本上可以找到你在我的网站上的facebook好友。我成功地运行了phpmyadmin查询,但由于某种原因,当我尝试从php运行代码时,它不起作用 下面是php代码。每当我将$string echo放入mysql时,它都可以正常工作,但无论出于什么原因,在php中运行它时,查询都不会返回任何结果 $fql = "SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = 10000090306
$fql = "SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = 100000903067831) AND is_app_user = 'true'";
$param = array(
'method' => 'fql.query',
'query' => $fql
);
$this->load->library('facebook');
echo $this->facebook->getLoginUrl();
$fqlResult = $this->facebook->api($param);
$userIDarray = array();
foreach($fqlResult as $result)
{
echo $result['uid']."<br>";
array_push($userIDarray, intval($result['uid']));
}
$string = implode(', ',$userIDarray);
echo $string;
$vars = array($string);
$query = $this->db->query("SELECT * FROM users WHERE users.facebook_id IN (?)", $vars);
echo var_dump($query);
foreach($query->result() as $data)
{
echo var_dump($data);
}
不能在一个?中传递多个参数 您需要使用连接为自己构造选项 像这样:
foreach($fqlResult as $result)
{
echo $result['uid']."<br>";
array_push($userIDarray, intval($result['uid']));
}
$string = implode(', ',$userIDarray);
$query = $this->db->query("SELECT * FROM users WHERE users.facebook_id
IN ('.$string.')");
请注意,您需要确保$userIDarray中的项目已正确转义。
因为您没有使用参数,但已将这些值注入SQL,所以有遭受SQL注入攻击的危险
您正在通过intval传递它们,intval保证字符串只包含0..9和-因此您在这里是安全的。
如果数据不是数字,则需要使用mysqli_real_escape_字符串来补偿绕过PDO参数的事实