我是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