首页 > 解决方案 > 如果没有 WHERE 子句,MySQL json_encode 无法读取查询

问题描述

将以下查询的结果编码到数据表时遇到问题。

SELECT e.*, d.dept_name, CONCAT(e.first_name,' ',SUBSTRING(e.middle_name, 1, 1),'. ', e.last_name,' ',e.name_suffix) AS 'name'
FROM `employees` e
JOIN department d on e.dept_id = d.dept_id

上面的查询在 MySQL 本身上运行时有效,但它在数据表中输出Invalid JSON Response。但是,当我使用子句运行上述代码时WHERE,它的输出没有问题。

SELECT e.*, d.dept_name, CONCAT(e.first_name,' ',SUBSTRING(e.middle_name, 1, 1),'. ', e.last_name,' ',e.name_suffix) AS 'name'
FROM `employees` e
LEFT JOIN department d on e.dept_id = d.dept_id
WHERE employee_id = '181'

在此处输入图像描述

我正在使用 MySQLi。这里可能是什么问题?

编辑:这是我的表employeesdepartment架构。

在此处输入图像描述 在此处输入图像描述

编辑:这是我的retrieve.php脚本。

<?php 

require_once 'db_connect.php';

$output = array('data' => array());

$sql = "SELECT e.*, d.dept_name, CONCAT(e.first_name,' ',SUBSTRING(e.middle_name, 1, 1),'. ', e.last_name,' ',e.name_suffix) AS 'name'
FROM `employees` e
LEFT JOIN department d on e.dept_id = d.dept_id
WHERE employee_id = '181'";
$query = $connect->query($sql);

$x = 1;
while ($row = $query->fetch_assoc()) {

    $actionButton = '
    <div class="btn-group">
      <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        Action <span class="caret"></span>
      </button>
      <ul class="dropdown-menu">
        <li><a type="button" data-toggle="modal" data-target="#editEmployeeModal" onclick="editEmployee('.$row['employee_id'].')"> <span class="glyphicon glyphicon-edit"></span> Edit</a></li>
        <li><a type="button" data-toggle="modal" data-target="#removeEmployeeModal" onclick="removeEmployee('.$row['employee_id'].')"> <span class="glyphicon glyphicon-trash"></span> Remove</a></li>      
      </ul>
    </div>
        ';
//$mid = substr($row['middle_name'],0,1);
//$name = $row['first_name'].' '.$mid.'. '.$row['last_name'];
    $output['data'][] = array(
        $row['employee_id'],
        $row['name'],
        $row['dept_name'],
        $row['position'],
        $row['position_level'],
        $row['employment_status'],
        $actionButton
    );

    //$x++;
}

// database connection close
$connect->close();

echo json_encode($output);

编辑:进一步调查,根据 Firefox 调试器,没有可用于请求的数据响应,这很奇怪,因为我的表不是空的并且查询在 PHPMYADMIN 上正确运行。

在此处输入图像描述

标签: phpmysqlmysqlidatatable

解决方案


推荐阅读