PHP mysqli - возвращает ассоциативный массив из подготовленного оператора

Я пытаюсь использовать mysqli для подготовки инструкции, чтобы безопасно передавать значения переменных в запрос. Все это работает для меня, но проблема, с которой я сталкиваюсь, - это получить результат в ассоциативном массиве. Здесь моя структура:

$query = $c->stmt_init();
$query->prepare("SELECT e._id,e.description,e.eventDate,e.eventTime,e.address,e.locationDescription,i.guestId,r.guestId IS NOT NULL AS 'RSVP-ed'  FROM eventList AS e  JOIN inviteList AS i ON e._id = i.eventId LEFT JOIN rsvpList AS r ON r.eventId = e._id AND i.guestId = r.guestId JOIN guestList AS g ON g._id = i.guestId WHERE g.groupName = ?");
$query->bind_param('s',$groupName);
if ($result = $query->execute()){
    $a  = $result->fetch_array(MYSQLI_ASSOC); // this doesn't work :/
} else{
    error_log ("Didn't work");
}

Как вы можете видеть, у меня есть много столбцов, которые передаются обратно, поэтому мне не нужно привязывать их к переменной.

Кроме того, конечной целью является передать обратно json закодированный ассоциативный массив в остальную часть моего приложения.

Я просмотрел проблему в документации php и об обмене стеками, и я нашел предложения, но я не могу заставить их работать. Может ли кто-нибудь протянуть руку?

Ответ 1

Если у вас есть расширение внутреннего драйвера MySql (mysqlnd), вы можете использовать get_result, чтобы получить ResultSet, а затем извлечь из него обычным способом:

$query = $c->prepare("SELECT e._id,e.description,e.eventDate,e.eventTime,e.address,e.locationDescription,i.guestId,r.guestId IS NOT NULL AS 'RSVP-ed'  FROM eventList AS e  JOIN inviteList AS i ON e._id = i.eventId LEFT JOIN rsvpList AS r ON r.eventId = e._id AND i.guestId = r.guestId JOIN guestList AS g ON g._id = i.guestId WHERE g.groupName = ?");
$query->bind_param('s',$groupName);
$query->execute();
$result = $query->get_result();
$a  = $result->fetch_array(MYSQLI_ASSOC); // this does work :)