javascript - $result->fetch_all(MYSQLI_ASSOC) 不返回任何内容

标签 javascript php mysql json ajax

我正在尝试创建一个 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/

相关文章:

javascript - UI 路由器中的多个 Controller

javascript - 使用数据容器时 Bootstrap 选择错位列表

php - 有没有办法对 $stmt->bind_param 进行错误检查?

mysql - 如何在 Mysql 中获取最近的行?

mysql - 仅在一张表中求和 - Mysql

python - 我是否需要迁移以将数据库链接到 Django

javascript - Ctrl + Enter 在 TEXTAREA 中使用 jQuery

c# - 处理 IE 填写表单 C#

javascript - 谷歌地图JavaScript代码的混淆

php - 转义 SED 命令