Reputation: 425
I am trying to get data from two database tables using the token I get from the first table I am trying to get the team name in the second table. This then is added to an array to finally print a json array. Have a look at my code below:
$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);
Doing the above however throws me an error HTTP ERROR 500. The next thing I should mention is that echo statement I commented above gives me a random number like 10.1421321. So what is the issue? A similar code works fine on another table I had tested but don't know why this doesn't work.
Update : There is something wrong with the connection in the second query ($resultx = $dbh->query($sqlx)->fetchAll(PDO::FETCH_ASSOC);
) because the first one providing fields other than $team are working fine and I can print json if I don't use the second query plus the team name but how do I get the second to work?
Upvotes: 1
Views: 920
Reputation: 759
There is nothing wrong with json_encode function. It works fine.
The issue is this line: $resultx = $dbh->query($sqlx)->fetchAll(PDO::FETCH_ASSOC);
You are calling fetch all on the result of a query, which fails and returns false. Try to run the SQL query in a console/GUI and see what the output is.
If you want to see the specific error returned by PDO use the following function: http://php.net/manual/en/pdo.errorinfo.php
Also change your code into 2 lines, to check if query is valid:
$stmt = $dbh->query($sqlx);
if($stmt!=false){
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
Upvotes: 1