嗨,希望你能帮助我:)
我有一个函数,它在过去有效,但这次我得到了一个有线行为..
它返回 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 members m ON e.memberid = m.id WHERE e.eventid =15 ORDER BY e.commenttime
这里它返回了所有字段的完整数据..
最好的问候 比亚克
最佳答案
我认为唯一的问题是您使用的数组键与查询中的列名不匹配。您只会收到评论时间,因为那是唯一确实匹配的时间。
您可以编辑 $row
的键以匹配查询中的列名,如下所示:
while ($row=mysqli_fetch_array($resultSet,MYSQLI_ASSOC)) {
$e = array();
$e['comment'] = $row['text'];
$e['commenttime'] = $row['commenttime'];
$e['commentuser'] = $row['username'];
此外,您似乎将结果绑定(bind)到变量,然后不使用它们。如果您从获取的数组中获取所有值,那么我不认为
$stmt->bind_result($comment, $commenttime, $commentuser);
实际上是必要的。
关于PHP mysqli 准备语句无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34888194/