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

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

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

Спасибо

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]