服务器没有给出 JSON 输出


no json output given from the server

我有两列和 1406 行的简单表。我想从中获取一个 json 输出到我的安卓应用程序。但问题是如果我在查询中使用 des 值,则不会生成输出。 我可以从材料值中获取输出,但是如果我使用 des 没有给出输出,即使我只使用 des,也不会生成输出。如果我在 400 左右使用限制,那么有一个带有 des 的输出。我尝试了XAMPP和WAMP。相同的结果。

我的 php 文件。

<?php
 require_once 'include/Config.php';
 header('Content-Type: application/json');
    $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE) or die("connection failed");
    //mysql_select_db(DB_DATABASE,$con) or die("db selection failed");

        $r=mysqli_query($con, "SELECT des from tbl_test_mas_material");
        $result = array();
        while($row=mysqli_fetch_array($r)){
                array_push($result, array('des' => $row[0]));
        }
                $json['feed']= $result;
                echo json_encode($json); 
    mysqli_close($con); 
?>

如果我将查询更改为"从限制 400 中选择 des"tbl_test_mas_material则有一个输出。

这是我的桌子

CREATE TABLE `tbl_test_mas_material` (
  `material` varchar(18) NOT NULL,
  `des` varchar(45) NOT NULL,
  PRIMARY KEY (`material`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

我也可以提供CSV文件。

$sql ='从tbl_test_mas_material中选择des';

$res = $con->query($sql);

而($row=mysqli_fetch_row($res))$arr[]=$row[0];

$arrJS = json_encode($arr);

回声$arrJS;

对脚本进行这些更改,然后从浏览器运行它,然后您应该会看到它可能产生的任何错误消息。

我为 MYSQLI 调用添加了一些错误检查,并且还设置了错误报告和显示错误,以防您在通常关闭这些有用的调试辅助工具的实时服务器上运行它。

我还简化了您使用的数组创建

<?php
error_reporting(E_ALL); 
ini_set('display_errors', 1);
require_once 'include/Config.php';
header('Content-Type: application/json');
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
if (mysqli_connect_error()) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
$r=mysqli_query($con, "SELECT `des` from tbl_test_mas_material");
if ( $r === false ) {
    echo mysqli_error($con);
    exit;
}
$result = array();
while( $row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
    $result[] = $row;
}
echo json_encode( array('feed' => $result) ); 
?>

JSON 字符串应显示在浏览器上,或者您可能已禁止显示的任何错误消息。

.........溶液。。。。。。。。。。

终于我想通了。问题出在我弄清楚的 json 编码上。所以我选择了另一种方式。这是最终代码。

<?php
require_once 'include/Configg_t.php';
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
$result = $conn->query("SELECT tbl_inventory.qty, tbl_mas_material.des, tbl_inventory.plant, tbl_mas_material.matgrp, tbl_inventory.material from tbl_inventory inner join tbl_mas_material 
                    on tbl_mas_material.material = tbl_inventory.material where tbl_inventory.qty > 0 and tbl_inventory.type = 'D' order by material");
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
    if ($outp != "[") {$outp .= ",";}
    $outp .= '{"qty":"'  . $rs["qty"].'",';
    $outp .= '"des":"'   . $rs["des"].'",';
    $outp .= '"plant":"'  . $rs["plant"].'",';
    $outp .= '"matgrp":"'   . $rs["matgrp"].'",';
    $outp .= '"material":"'. $rs["material"].'"}'; 
}
$outp .="]}";
$conn->close();
echo ( '{"feed" : ' . $outp);