如何使用 Javascript 和 PHP 用 mysql 查询的输出填充列表
Posted
技术标签:
【中文标题】如何使用 Javascript 和 PHP 用 mysql 查询的输出填充列表【英文标题】:How to fill a list with the output from a mysql query with Javascript and PHP 【发布时间】: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 中包含实际结果与期望结果 【参考方案1】:你可以这样锻炼吗
$result = array();
while($row = mysqli_fetch_array($res))
$result[] = array('brand'=>$row);
【讨论】:
好的,所以我将数组 $result[] 与每一行的输出打包在一起,然后我必须将下一行更改为: echo json_encode(array('result'=>$result[] ));还有我需要 'function(result[]) '? 您可以像您的代码一样使用 echo json_encode(array('result'=>$result)) 。在 jquery 每个函数 $.each(result.result, function(data) console.log(data); )。使用 $.each(result.result, function(data) var data = $.parseJSON(data); console.log(data.brand); ) 后检查所需的结果。 感谢您的回复,南莎。我使用了 $.each(result.result, function(data) var data = $.parseJSON(data); console.log(data.brand); )。按照建议并得到一个控制台错误“GET 192.168.1.162/tests/simple24/fetchBooks.php?brand=/var/www/html/...”这看起来很像我期望看到的 GET 命令所以不要非常理解错误。 [该行末尾应为“/var/www/html/books/China”]。如果它有效,我应该会看到“中国”类别的书名列表。 回顾一下:当我将 php 代码更改为: $result = array(); while($row = mysqli_fetch_array($res)) $result[] = array('brand'=>$row); 。然后我不再得到书名列表(但程序仍然启动。但是,它仍然记录错误。 $.each(result.result, function(data) var data = $.parseJSON(data); console. log(data.brand); ) 对我没有任何帮助。以上是关于如何使用 Javascript 和 PHP 用 mysql 查询的输出填充列表的主要内容,如果未能解决你的问题,请参考以下文章