没有从服务器

时间:2016-04-27 10:20:28

标签: php mysql json

我有两个列和1406行的简单表。我想从它获得一个json输出到我的Android应用程序。但问题是,如果我在查询中使用 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); 

?>

如果我将查询更改为&#34; SELECT des from tbl_test_mas_material limit 400&#34; ,则会有输出。

这是我的表

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文件。

3 个答案:

答案 0 :(得分:0)

  

$ sql =&#39;从des&#39;中选择tbl_test_mas_material;

     

$ res = $ con&gt;查询($ sql);

     

而($行= mysqli_fetch_row($ RES))$ ARR [] = $行[0];

     

$ arrJS = json_encode($ arr);

     

echo $ arrJS;

答案 1 :(得分:0)

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

我已经为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字符串应该显示在浏览器上,或者您可能已经抑制的任何错误消息。

答案 2 :(得分:0)

<强> .........解..........

最后我弄清楚了。问题在于 json encode ,因为我弄清楚了。所以我选择了另一种方式。这是最终的代码。

<?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);