PHP с помощью MySQL конвертировать набор результатов в массив, а затем в JSON

0

Я думал, что я хочу просто, но по какой-то причине я застрял. У меня есть следующее:

$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 и многое другое, но я продолжаю получать ошибки для этих вызовов/функций как неопределенные. Другие примеры были для не подготовленных заявлений. Независимо от того, что я пробовал, мне не удалось создать массив с набором результатов, что мне не хватает?

благодаря

Теги:
mysqli
resultset

1 ответ

0
Лучший ответ

После того, как вы используете bind_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();
   }
}
  • 0
    Я думаю, у меня нет драйвера sqlnd, и поэтому ни одно из «чистых» решений не сработало. Я уверен, что у меня есть 5.4, но я спрошу мою хостинговую компанию.
  • 0
    @ Amos да, на самом деле, если сможешь, стреляй в 5.5. рад, что это помогло

Ещё вопросы

Сообщество Overcoder
Наверх
Меню