【发布时间】:2015-07-19 16:46:47
【问题描述】:
我是 PHP 新手,希望有人可以帮助我。
我目前有以下 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...” .
非常感谢您对此的任何帮助,
迈克
【问题讨论】:
-
使用其中一种解决方法来扩展占位符
?,?,?,…列表以进行参数绑定。 MySQLi using an IN in a where, Can I bind an array to an IN() condition?, MySQLi prepared statements with IN operator -
@Rizier123:谢谢 - 我会看看。
-
@mario:谢谢 - 我也会检查一下。
-
我查看了此处提供的链接,它们似乎针对我遇到的问题,但我仍然无法将其应用于我的查询。
标签: php arrays multidimensional-array associative-array