Php PDO&;Foreach(非法字符串偏移)

Php PDO&;Foreach(非法字符串偏移),php,mysql,foreach,Php,Mysql,Foreach,在我的应用程序中,我试图返回到每个MySQL行。但是,当我尝试执行此操作时,会出现以下错误: [Fri Oct 09 17:03:56.314003 2015][:error][pid 10641][client 127.0.0.1:40897]PHP警告:第79行/var/www/html/ViewTicket.PHP中的非法字符串偏移量“Date”,请参考: [Fri Oct 09 17:03:56.314041 2015][:error][pid 10641][client 127.0.0

在我的应用程序中,我试图返回到每个MySQL行。但是,当我尝试执行此操作时,会出现以下错误:

[Fri Oct 09 17:03:56.314003 2015][:error][pid 10641][client 127.0.0.1:40897]PHP警告:第79行/var/www/html/ViewTicket.PHP中的非法字符串偏移量“Date”,请参考:

[Fri Oct 09 17:03:56.314041 2015][:error][pid 10641][client 127.0.0.1:40897]PHP警告:第84行/var/www/html/ViewTicket.PHP中的非法字符串偏移量'Content',请参考:

这是我的代码:

<?php
$pageT = "View Ticket";
require_once("core/inc.php");

    $ID = strip_tags(htmlentities($_GET['ID']));

    $db = new DB();
    $Config = new Config;
    $User   = new User;
    $Organize = new Organize;

    $Ticket = $db->fetchRow(
        'SELECT * FROM tickets WHERE ID = :id',
        [':id' => $ID]
    );

    $TR = $db->fetchRow(
        'SELECT * FROM ticket_replies WHERE TID = :tid',
        [':tid' => $ID]
    );

    $Poster = $db->fetchRow(
        'SELECT * FROM users WHERE UID = :poster',
        [':poster' => $Ticket['Poster']]
    );

    $Replier = $db->fetchRow(
        'SELECT * FROM users WHERE UID = :poster',
        [':poster' => $TR['Poster']]
    );

    if($Ticket == 0) {
        echo "Sorry, but this is an unkown ticket.";
        require_once("modules/design/footer.ris.php");
        die();
    }

    /*
    if($User->Info('UID') !== $Ticket['Poster']) {
        if($User->Info('Rank') !== "Support" || $User->Info('Rank') !== "Admin" || $User->Info('Rank') !== "Admin") {
            echo "Nice try, this is not your ticket. ;(";
            require_once("modules/design/footer.ris.php");
            die();
        }
    }
    */


    echo '
                    <div class="row">
                            <div class="col-md-8 col-lg-9">
                                <div class="panel panel-default m-t-20">
                                    <div class="panel-heading">
                                        <h3 class="panel-title">
                                        <span class="label label-warning"> '.strip_tags(htmlentities($Ticket['Priority'])).'</span> &nbsp; &nbsp;
                                        <span class="label label-primary"> '.strip_tags(htmlentities($Ticket['Dept'])).'</span> '.strip_tags(htmlentities($Ticket['Title'])).''; if($User->Info('Rank') == "Admin" || $User->Info('Rank') == "Owner") { echo "<a style='float:right;margin-left:5px;'class='btn btn-icon waves-effect waves-light btn-danger m-b-5' href=''>Delete Ticket</a> <a style='float:right;margin-left:5px;'class='btn btn-icon waves-effect waves-light btn-info m-b-5' href=''>View Logs</a> &nbsp; <a style='float:right;' class='btn btn-icon waves-effect waves-light btn-info m-b-5' href='AP_EditUser?UID=".$Poster['UID']."'>Edit User</a> &nbsp;"; } echo '</h3>
                                    </div>
                                    <div class="panel-body">
                                        <div class="media m-b-30">
                                            <div class="media-body"><span class="media-meta pull-right">'.strip_tags(htmlentities($Organize->timeElapsedFromUNIX($Ticket['Date']))).'</span>
                                                <h4 class="text-primary m-0"><u>'.strip_tags(htmlentities($Poster['Username'])).'</u></h4>
                                            </div>
                                        </div>
                                            <p>
                                                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '.strip_tags(htmlentities($Ticket['Details'])).'
                                            </p>
                                    </div>
                                </div>
                                ';

                                    foreach ($TR as $Reply) {

                                    if($Replier['Rank'] == "Support" || $Replier['Rank'] == "Admin" || $Replier['Rank'] == "Owner") {

                                    echo '
                                <div style="border-top:4px solid red;" class="panel panel-default m-t-20">
                                    <div class="panel-body">
                                        <div class="media m-b-30">
                                            <div class="media-body"><span class="media-meta pull-right">'.strip_tags(htmlentities($Organize->timeElapsedFromUNIX($Reply['Date']))).'</span>
                                                <h4 class="text-primary m-0">'.strip_tags(htmlentities($Replier['Username'])).'</h4> <small>'.$Replier['Rank'].'</small>
                                            </div>
                                        </div>
                                            <p>
                                                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '.$Organize->showBBcodes($Reply['Content']).'
                                            </p>
                                    </div>
                                </div>
                                    ';

                                } else {
                                    echo '
                                <div style="border-top:4px solid #CCC;" class="panel panel-default m-t-20">
                                    <div class="panel-body">
                                        <div class="media m-b-30">
                                            <div class="media-body"><span class="media-meta pull-right">'.strip_tags(htmlentities($Organize->timeElapsedFromUNIX($TR['Date']))).'</span>
                                                <h4 class="text-primary m-0">'.strip_tags(htmlentities($Replier['Username'])).'</h4> <small>'.$Replier['Rank'].'</small>
                                            </div>
                                        </div>
                                            <p>
                                                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '.strip_tags(htmlentities($Reply['Details'])).'
                                            </p>
                                    </div>
                                </div>
                                    ';
                                }
                                break;
                            }

                                echo '
                                <div class="panel panel-default">
                                    <div class="panel-body">
                                        <div class="media">
                                            <form role="form" method="POST">
                                            <div class="media-body">
                                                <textarea class="wysihtml5 form-control" id="replyDetails" name="replyDetails" rows="9" placeholder="Reply here..."></textarea>
                                            </div>
                                        </div>
                                        <div class="text-right">
                                            <button type="submit" id="addReply" name="addReply" class="btn btn-primary waves-effect waves-light m-t-30 w-md">Send Reply</button>
                                        </div>
                                        </form>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
    ';

    if(isset($_POST['addReply'])) {
        $Details = strip_tags(htmlentities($_POST['replyDetails']));

        if(empty($Details)) {
            echo '<div class="col-md-8"><div class="alert alert-danger"><strong>Could not send reply :</strong> <br />  &bullet; You forgot a field or two. Please try again.</div></div>';
        } elseif(strlen($Details) > 700) {
            echo '<div class="col-md-8"><div class="alert alert-danger"><strong>Could not send reply :</strong> <br />  &bullet; You cannot exeed 700 characters. Please try again.</div></div>';

        } else {
            $Values = [
                'TID'             => $ID,
                'Poster'          => $User->Info('UID'),
                'Content'         => $Details,
                'Date'            => time()
            ];

            $insertValues = $db->insert('ticket_replies')->values($Values);

            $Values2 = [
                'Username'        => $User->Info('Username'),
                'UID'             => $User->Info('UID'),
                'IP'              => $Logs->IP(),
                'Platform'        => $Logs->Browser(),
                'Type'            => '8',
                'Value'           => 'Replied to a ticket.',
                'Date'            => $Logs->Date(),
            ];

            $insertValues2 = $db->insert('logs')->values($Values2);
        }
    }

我已经修好了,不过谢谢你。我更改了票务查询和foreach

`


我可能会说,
'SELECT*FROM ticket\u reply WHERE TID=:TID',
此查询不会返回任何名为
Content
的字段。请执行
print\r($TR):退出并将结果传递到这里。很抱歉响应太晚,我得到了
array(5){[“ID”]=>string(1)“1”[“TID”]=>string(1)“1”[“Poster”]=>string(1)“1”[“Content”]=>string(23)”测试内容,kthx。”[“Date”=>string(10)“1444357123”}
但这只是一个元素吗?这是
print\r($TR)
还是
print\r($Reply)
这是
print\r($TR)
$Reply
返回
字符串(1)“1”
这是问题所在,因为您试图从Reply
$Reply['Content']获取内容

    $Reply = $db->fetchRows('SELECT * FROM ticket_replies WHERE TID = :tid', [':tid' => $ID]);
    foreach ($Reply as $TR) {
                                        $Replier = $db->fetchRow(
                                            'SELECT * FROM users WHERE UID = :poster',
                                            [':poster' => $TR['Poster']]
                                        );

`