我正在尝试创建一个 JSON 回调。我有两个文件,json.html 和 json.php。另外,我有一个这样的数据库:
Type: MySQL
DB Name: user_table
Table name: customers
Fields: id, name, product, supplier
我的 json.html 的代码是:
<html>
<head>
</head>
<body>
<div id="demo" style="font-size: 20px;"></div>
<script>
obj = { "table":"customers", "limit":10 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
for (x in myObj) {
txt += myObj[x] + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
};
xmlhttp.open("POST", "json.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + dbParam);
</script>
</body>
</html>
这是 json.php 的代码:
<?php
$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = "db";
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_POST["x"], false);
$conn = new mysqli($servername, $username, $password, $dbname);
$result = $conn->query("SELECT name FROM ".$obj->$table." LIMIT ".$obj->$limit);
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($outp);
?>
这是错误日志报告:
PHP 注意: undefined variable :/home/user/public_html/json/json.php 第 7 行中的表
PHP fatal error :无法访问第 7 行/home/user/public_html/json/json.php 中的空属性
PHP 注意: 未定义索引:x 在/home/user/public_html/json/json.php 第 4 行 PHP 注意: undefined variable :/home/user/public_html/json/json.php 第 7 行中的表
PHP 注意:尝试在第 7 行获取/home/user/public_html/json/json.php 中非对象的属性
PHP 注意: undefined variable :限制在/home/user/public_html/json/json.php 第 7 行
PHP 注意:尝试在第 7 行获取/home/user/public_html/json/json.php 中非对象的属性
PHP fatal error :在第 9 行/home/user/public_html/json/json.php 中的非对象上调用成员函数 fetch_all()
我怎样才能让它发挥作用?
最佳答案
正如 David 的评论中提到的,问题出在 fetch_all() 上。我猜问题出在服务器资源上,因为页面在调用时返回 500。
无论如何,我都使用此方法检索了所需的数组:
$conn = new mysqli($servername, $username, $password, $dbname);
$result = $conn->query("SELECT * FROM customers LIMIT 10");
$outp = array();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$outp[] = $result->fetch_array(MYSQLI_ASSOC);
}
echo json_encode($outp);
它成功了。
现在,我将使其与我的 JSON 回调一起使用。
关于javascript - $result->fetch_all(MYSQLI_ASSOC) 不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41531618/