PDO Fetch Assoc返回单词“”;数组”;


PDO Fetch Assoc returns the word "Array"

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/>";