【发布时间】:2021-10-06 15:34:15
【问题描述】:
我正在尝试使用 mysql 查询的输出填充列表。我可以提供 1 件商品,但不能提供更多。
PHP 代码:('fetchBooks.php')
$con = mysqli_connect(HOST,USERNAME,PASSWORD,DB);
$brand = $_GET['brand'];
$res = mysqli_query($con, "CALL GetBooks('$brand')");
$result = array();
while($row = mysqli_fetch_array($res)){
array_push($result,
array('brand'=>$row[0]));
}
echo json_encode(array('result'=>$result));
Javascript 代码:
$.getJSON(
'fetchBooks.php',
'brand='+ brand,
function(result){
const olEle = document.createElement("ol");
olEle.setAttribute("id", "tomes");
document.body.appendChild(olEle);
$.each(result.result, function(){
const liEle = document.createElement("li");
const aEle = document.createElement('a');
aEle.innerText = this['brand'];
liEle.append(aEle);
olEle.append(liEle);
});
}
);
一切正常,但如果我尝试:
array_push($result, array('brand'=>$row[0]), $row[1]); or
array_push($result, array('brand'=>$row[0]), 'brand'=> $row[1]);
我似乎永远无法在输出中获得超过一项。我已经提出了一些其他想法,但我需要控制输出的每个元素,以便我可以将它们分别放置在网页上,例如标题、作者、描述等我知道“$.each”可能仅适用于每个记录的整个输出,而不是记录的“每个”元素。欢迎任何想法或帮助!
【问题讨论】:
-
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!
-
不确定您所期望的结果与您得到的结果,因为您的问题中没有具体示例,但是将结果作为关联数组获取并直接发送会不会更容易作为您的 JSON 响应的结果?您似乎做了很多工作来重建数组,但最终没有得到想要的结果。您能否在reproducible minimal example 中包含实际结果与期望结果
标签: javascript php jquery json list