12

我正在尝试使用 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 文档和堆栈交换中查找了该问题,并找到了建议,但我似乎无法让它们工作。有人可以帮忙吗??

4

1 回答 1

17

如果你有 MySql Native Driver 扩展(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 :)
于 2013-02-22T02:57:28.457 回答