我是PHP新手,希望有人能帮助我解决这个问题。PHP:在SQL注入预防的查询中使用IN语句时出错
我目前有以下PHP是jQuery中Ajax调用的一部分。 手动输入ID而不是?(例如1,2,3,4,5)然后这个按预期工作,但是当我使用下面的查询时,它只返回一个项目,如下所示,所以我相信IN(?)的组合和我尝试防止SQL注入在这里不起作用。
有人能告诉我我在做什么错吗?
此外,这创建了一个多维数组,我想知道这是否可以简化,因为我只需要每个项目的ID(tID
)和值(content
)。
我的PHP:
$content = implode(",", $_POST["content"]); // an array containing IDs retrieved from Ajax
$languageFrm = $_POST["languageFrm"];
$stmt = $conn->prepare("SELECT tID, " . $languageFrm . " FROM TranslationsMain WHERE tID IN(?) ORDER BY tID");
$stmt->bind_param("s", $content);
$stmt->execute();
$result = $stmt->get_result();
while($arrTranslations = $result->fetch_assoc()){
$translations[] = array("tID" => $arrTranslations["tID"], "content" => $arrTranslations[$languageFrm]);
}
var_dump($translations);
电流导致的Ajax:
array(1) {
[0]=>
array(2) {
["tID"]=>
int(1)
["content"]=>
string(6) "Value1"
}
}
更新:
我的问题是,即使发布的链接和电流的答案似乎请参阅适当的解决方案,因为我无法继续使用其他PHP代码每当我使用其中一种建议的解决方案时,我会收到错误“Call to a member function fetch_assoc() on a non-object...
”。
非常感谢任何帮助,
迈克
请参阅:http://stackoverflow.com/q/1586587/3933332 – Rizier123
使用其中一种解决方法来展开占位符“?”,“?”,...参数绑定列表。 [MySQLi在IN中使用IN](http://stackoverflow.com/q/3269407),[我可以将数组绑定到IN()条件吗?](http://stackoverflow.com/q/920353) ,[MySQLi准备语句与IN运算符](http://stackoverflow.com/q/11938876) – mario
@ Rizier123:谢谢 - 我会看看。 – keewee279