Php PDO&;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.1:40897]PHP警告:第84行/var/www/html/ViewTicket.PHP中的非法字符串偏移量'Content',请参考: 这是我的代码: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
<?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>
<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> <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> "; } 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>
'.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>
'.$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>
'.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 /> • 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 /> • 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']]
);
`