Я пытаюсь использовать 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 и в обмене стеками, и я нашел предложения, но я не могу заставить их работать. Может ли кто-нибудь протянуть руку?
Если у вас есть расширение внутреннего драйвера 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 :)