使用PHP将sql数据转换为json数组会产生HTTP ERROR 500

时间:2016-07-17 20:07:21

标签: php mysql arrays json

我正在尝试使用从第一个表中获取的令牌从两个数据库表中获取数据我试图在第二个表中获取团队名称。然后将其添加到数组中以最终打印json数组。看看下面的代码:

PDO

执行上述操作会引发错误HTTP ERROR 500.接下来我要提到的是我上面评论的echo语句给了我一个像10.1421321这样的随机数。那么问题是什么?类似的代码在我测试的另一个表上运行正常,但不知道为什么这不起作用。

更新:第二个查询($dbh = new PDO("mysql:host=localhost;dbname=dbnameabc", $username, $password); $sql = "SELECT * FROM chatbox order by id desc"; $result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC); $return = []; foreach ($result as $row) { $postid = $row['id']; $token = $row['token']; $gpslat = $row['gpslat']; $gps = $row['gps']; $postmsg = $row['msg']; //echo $postid + " is id " + $token + " is token " + $postmsg + " is postmsg " + $gps + " is gps and " + $gpslat; $team; $sqlx = "SELECT * FROM logintable WHERE token='$token'"; $resultx = $dbh->query($sqlx)->fetchAll(PDO::FETCH_ASSOC); foreach ($resultx as $rowx) { $team = $rowx['name']; } $return[] = [ 'postmsg' => $postmsg, 'token' => $token, 'gps' => $gps, 'gpslat' => $gpslat ]; } $dbh = null; header('Content-type: application/json'); echo json_encode($return); )中的连接有问题,因为第一个提供$ team以外的字段的工作正常,我可以打印json如果我不要使用第二个查询加上团队名称,但如何让第二个查询工作?

1 个答案:

答案 0 :(得分:1)

json_encode函数没有任何问题。它工作正常。

问题是这一行: $ resultx = $ dbh-> query($ sqlx) - > fetchAll(PDO :: FETCH_ASSOC);

您正在对查询结果调用all all,该查询失败并返回false。尝试在控制台/ GUI中运行SQL查询,看看输出是什么。

如果要查看PDO返回的特定错误,请使用以下函数: http://php.net/manual/en/pdo.errorinfo.php

还要将代码更改为2行,以检查查询是否有效:

Sub Format_as_Table()
    Dim lcol As Long, lrow As Long
    If Range_Find_Last(Sheet1) <> "#Null!" Then
        lrow = Range_Find_Last(Sheet1, xlByRows)
        lcol = Range_Find_Last(Sheet1, xlByColumns)
        '~~> Take note, we use Excels Default SearchOrder 
        '~~> to determine if we want to return row or column number
    End If 

    With Sheet1
        .ListObjects.Add(xlSrcRange, Range(Cells(5, 2), _
            Cells(lRow, lCol)), , xlYes).Name = "KPI_Table"
        .ListObjects("KPI_Table").TableStyle = "TableStyleLight1"
    With
End Sub