Im attempting to return a first name based off the users ID in a foreach statement but instead it returns the word "array" as the first name. I have no idea why its returning the word array in the scenario.
<table style="margin-top:-16px;">
<tbody style="overflow:hidden;">
<tr>
<th>Title</th>
<th>Author</th>
<th>Date Submitted</th>
<th>File Location</th>
<th>Download Status</th>
<th>Approve Status</th>
</tr>
<?php
$dbConnect = 'mysql:dbname=test;host=localhost';
$username = "test";
$password = "test";
try{
$dbConnect = new PDO($dbConnect, $username, $password);
} catch (PDOException $error) {
echo 'Error Connecting: ' . $error->getMessage();
}
$caseMgmtReturn = "SELECT * FROM `case`";
$caseMgmt = $dbConnect->query($caseMgmtReturn);
foreach ($caseMgmt as $row) {
$user = $row["userID"];
$firstPull = $dbConnect->prepare("SELECT `firstName` FROM `user` WHERE `userID`=:user");
$firstPull->bindValue(":user", $user);
$firstPull->execute();
$firstName = $firstPull->fetchAll(PDO::FETCH_ASSOC);
print "<tr> <td>" .$row["title"] . "</td> <td>" . $firstName . "</td> <td> " . $row["dateSubmitted"] . "</td> <td>" . $row["fileLocation"] . "</td> <td>" . $row["downloadStatus"] . "</td> <td>" . $row["approvedStatus"] ."</td></tr><br/>";
}
?>
</tbody>
</table>
http://php.net/manual/en/pdostatement.fetchall.php
If you are going to use ->fetchAll(PDO::FETCH_ASSOC) you need to then reference the associated Key=>Value pair, such as
$firstName['firstName']
If you use ->fetch() it returns an index based array, so you would retrieve your value like so;
$firstName[0]
You use index position 0 because in your SQL string you referenced a single column on the table, as 'firstName'. If you used
SELECT * FROM
Then you would need to know the order in which the columns are in the table which is what makes the ->fetchAll(PDO::FETCH_ASSSOC) so useful. You don't reference a number, you reference a column name.
So your code should look like this:
$firstPull = $dbConnect->prepare("SELECT `firstName` FROM `user` WHERE `userID`=:user");
$firstPull->bindValue(":user", $user);
$firstPull->execute();
$values = $firstPull->fetchAll(PDO::FETCH_ASSOC);
print "<tr> <td>" .$row["title"] . "</td> <td>" . $values['firstName'] . "</td> <td> " . $row["dateSubmitted"] . "</td> <td>" . $row["fileLocation"] . "</td> <td>" . $row["downloadStatus"] . "</td> <td>" . $row["approvedStatus"] ."</td></tr><br/>";