PHP mysqli 准备语句无法正常工作

标签 php mysql mysqli

嗨,希望你能帮助我:)

我有一个函数,它在过去有效,但这次我得到了一个有线行为..

它返回 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/

相关文章:

php - 适合使用 Codeigniter 编写 PDF 的库

php - 使用在本地 nginx 服务器上运行的 codeigniter 连接到外部 mysql 数据库

php - 如何从 MySQL 表中提取两个行,其中一个字段值相同,而另一个字段值不同?

mysql - 如何根据数据的值降序对数据进行排序

php - Mysqli参数绑定(bind)问题

php - Json跳过数组只插入需要的东西

php - mySqli 绑定(bind)参数 LIKE 与通配符

php - 无法在 Youtube API v3 中下载隐藏式字幕

mysql - 在 MySQL 中创建表 'ShoppingCart' - 错误 1005

php - 如何在表中插入章节数行