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 に答える