我有两列和 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);