使用mysqli的php将resultset转换为数组,然后转换为json

使用mysqli的php将resultset转换为数组,然后转换为json,php,mysqli,resultset,Php,Mysqli,Resultset,我以为我想要的很简单,但由于某种原因,我被卡住了。我有以下资料: $sql = "..."; if ($stmt = $con->prepare($sql)) { $stmt->bind_param("sss", $x,$y,$z); if ($stmt->execute()) { $result = array(); //not sure if needed $stmt->bind_result($x1,$y1,$

我以为我想要的很简单,但由于某种原因,我被卡住了。我有以下资料:

$sql = "...";
if ($stmt = $con->prepare($sql)) {          
   $stmt->bind_param("sss", $x,$y,$z);
   if ($stmt->execute()) {
      $result = array(); //not sure if needed
      $stmt->bind_result($x1,$y1,$z1); //not sure if needed
      //loop resultset and put it in an array ($result);
      echo json_encode($result); // convert to json
      $stmt->close();
   }
}
我看到了fetchAll、fetch_assoc以及更多,但这些调用/函数的错误一直是未定义的。其他例子是未准备好的发言。无论我做了什么尝试,我都无法使用resultset创建一个数组,我缺少了什么


谢谢

在您使用
bind\u result
之后,您仍然需要获取以下内容:

$sql = "SELECT col1, col2, col3 FROM table_name WHERE col4 = ? AND col5 = ? AND col6 = ?";
if ($stmt = $con->prepare($sql)) {          
   $stmt->bind_param('sss', $x,$y,$z);
   if ($stmt->execute()) {
      $result = array();
      $stmt->bind_result($x1,$y1,$z1);

      // You forgot this part
      while($stmt->fetch()) {
          $result[] = array('col1' => $x1, 'col2' => $y1, 'col3' => $z1);
      }

      echo json_encode($result); // convert to json
      $stmt->close();
   }
}
或者如果系统上有
mysqlnd
驱动程序:

$sql = "SELECT col1, col2, col3 FROM table_name WHERE col4 = ? AND col5 = ? AND col6 = ?";
if ($stmt = $con->prepare($sql)) {          
   $stmt->bind_param('sss', $x,$y,$z);
   if ($stmt->execute()) {
      $data = $stmt->get_result();
      $result = array();

      while($row = $data->fetch_assoc()) {
          $result[] = $row;
      }

      echo json_encode($result); // convert to json
      $stmt->close();
   }
}

在何处以及如何设置$con?,这些函数需要从PHP 5.3开始提供的驱动程序,从PHP 5.4开始默认启用。我想我没有sqlnd驱动程序,这就是为什么没有“更干净”的解决方案不起作用。我肯定我有5.4,但我会问我的托管公司。@Amos是的,你应该,事实上,如果可以的话,争取5.5。很高兴这有帮助