drxm5014 2016-04-03 21:12
浏览 77
已采纳

PDO Fetch_assoc返回单词“Array”

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>
  • 写回答

1条回答 默认 最新

  • douren8379 2016-04-03 21:22
    关注

    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/>";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动