Im试图根据foreach语句中的用户ID返回一个名字,但它却返回单词"array"作为名字。我不知道它为什么在场景中返回单词数组。
<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
如果要使用->fetchAll(PDO::FETCH_ASSOC),则需要引用相关的Key=>Value对,例如
$firstName['firstName']
如果你使用->fetch(),它会返回一个基于索引的数组,所以你会像这样检索你的值;
$firstName[0]
使用索引位置0是因为在SQL字符串中引用了表上的一列,即"firstName"。如果您使用
SELECT * FROM
然后,您需要知道列在表中的顺序,这就是->fetchAll(PDO::FETCH_ASSSOC)如此有用的原因。你引用的不是数字,而是列名。
所以你的代码应该是这样的:
$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/>";