【问题标题】:PHP json_encode return empty array on the first index from MySQL tablePHP json_encode 在 MySQL 表的第一个索引上返回空数组
【发布时间】:2015-08-21 13:24:37
【问题描述】:

您好,我是 PHP 新手,我正在尝试从 MySQL 表中获取数据作为 JSON 数组。我确实从 PHP 文件中获取了 JSON 数组,但第一个索引上有一个空数组。

这是我在 MySQL 上创建的表结构:

CREATE TABLE IF NOT EXISTS `tbl_employee` (
  `employee_id` int(4) NOT NULL AUTO_INCREMENT,
  `employee_name` varchar(60) NOT NULL,
  `designation` varchar(30) NOT NULL,
  `hired_date` date NOT NULL,
  `salary` int(10) NOT NULL,
  PRIMARY KEY (`employee_id`),
);

INSERT INTO `tbl_employee` (`employee_id`, `employee_name`, `designation`, `hired_date`, `salary`) VALUES
(1, 'Steve', 'VP', '2013-08-01', 60000),
(2, 'Robert', 'Executive' '2014-10-09', 20000),
(3, 'Luci', 'Manager', '2013-08-20', 40000);
(4, 'Joe', 'Executive', '2013-06-01', 25000);
(5, 'Julia', 'Trainee', '2014-10-01', 10000);

这是我的 PHP 文件:

<?php
    //open connection to mysql db
    $dbhost = 'clvm.ddns.net:8026';
    $dbuser = 'root';
    $dbpass = '';
    $dbname = 'ta_trial';
    //$conn = mysql_connect($dbhost, $dbuser, $dbpass);

    $connection = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname) or die("Error " . mysqli_error($connection));

    //fetch table rows from mysql db
    $sql = "select * from tbl_employee";
    $result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));

    //create an array
    $emparray[] = array();
    while($row =mysqli_fetch_assoc($result))
    {
        $emparray[] = $row;
    }

    echo json_encode($emparray);
?>

这就是我得到的:

[[],{"employee_id":"1","employee_name":"Steve","designation":"VP","hired_date":"2013-08-01","salary":"60000"},{"employee_id":"2","employee_name":"Robert","designation":"Executive","hired_date":"2014-10-29","salary":"20000"},{"employee_id":"3","employee_name":"Luci","designation":"Manager","hired_date":"2013-08-20","salary":"40000"},{"employee_id":"4","employee_name":"Joe","designation":"Executive","hired_date":"2013-06-01","salary":"25000"},{"employee_id":"5","employee_name":"Julia","designation":"Trainee","hired_date":"2014-10-01","salary":"10000"}]

我不明白为什么第一个索引上会有一个空数组?谁能指出错误或我在这里做错了什么?有没有更好的解决方案来做到这一点?谢谢,任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql arrays json mysqli


    【解决方案1】:

    你错过了一些东西 $emparray[] = array();到 $emparray = array();

    <?php
        //open connection to mysql db
        $dbhost = 'clvm.ddns.net:8026';
        $dbuser = 'root';
        $dbpass = '';
        $dbname = 'ta_trial';
        //$conn = mysql_connect($dbhost, $dbuser, $dbpass);
    
        $connection = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname) or die("Error " . mysqli_error($connection));
    
        //fetch table rows from mysql db
        $sql = "select * from tbl_employee";
        $result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));
    
        //create an array
        $emparray = array();
        while($row =mysqli_fetch_assoc($result))
        {
            $emparray[] = $row;
        }
    
        echo json_encode($emparray);
    ?>

    检查结果ok

    【讨论】:

    • 啊抱歉我的错,非常感谢您指出!它有效!
    • 它很好,有时我们从上到下阅读我们的代码,发现遗漏了什么......但它只是令人讨厌的字符......
    猜你喜欢
    • 2016-06-02
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2020-02-08
    • 2014-02-18
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多