希望你能帮助我:)
我有一个功能,它在过去有效,但这次我得到了有线行为..
它返回e.commenttime但没有别的..
function Get_Comment($mysqli, $event_id){
if ($stmt = $mysqli->prepare("SELECT e.text, e.commenttime, m.username FROM eventcomment e INNER JOIN members m ON e.memberid = m.id WHERE e.eventid =$event_id ORDER BY e.commenttime ")); {
$stmt->bind_result($comment, $commenttime, $commentuser);
// Execute the prepared query.
$stmt->execute();
//grab a result set
$resultSet = $stmt->get_result();
// Returning array
$events = array();
// Fetch results
while ($row=mysqli_fetch_array($resultSet,MYSQLI_ASSOC)) {
$e = array();
$e['comment'] = $row['comment'];
$e['commenttime'] = $row['commenttime'];
$e['commentuser'] = $row['commentuser'];
// Merge the event array into the return array
array_push($events, $e);
// print_r($e);
}
// return array"
return $events;
}
}
确保我通过phpMyAdmin
运行的数据是合理的SELECT e.text,e.commenttime,m.username FROM eventcomment e INNER JOIN成员m ON e.memberid = m.id WHERE e.eventid = 15 ORDER BY e.commenttime
这里它返回了所有字段的完整数据..
最诚挚的问候 Bjarke
答案 0 :(得分:1)
我认为唯一的问题是您使用的数组键与查询中的列名不匹配。您只获得评论时间,因为这是唯一 匹配的评论时间。
您可以修改$row
的密钥以匹配查询中的列名,如下所示:
while ($row=mysqli_fetch_array($resultSet,MYSQLI_ASSOC)) {
$e = array();
$e['comment'] = $row['text'];
$e['commenttime'] = $row['commenttime'];
$e['commentuser'] = $row['username'];
另外,看起来你将结果绑定到变量然后不使用它们。如果您从所提取的数组中获取所有值,那么我就不会想到
$stmt->bind_result($comment, $commenttime, $commentuser);
实际上是必要的。