0

私は古き良きMySQLからMySQLi(遅いブルマー、私は知っている)に切り替えて、を選択MySQLiしましたPDO

まず、私は連想配列が好きです(eg: $db_data['whatever_field'])。そのため、連想配列を返さないため、プリペアドステートメントを使用できません(デフォルト/回避策なし)。

したがって、MySQLi自分でステートメントを手動で準備する必要があります。例:

'SELECT * FROM admin_users WHERE email='. $mysqli->real_escape_string($_COOKIE['admin']['email']) .' AND password='. $mysqli->real_escape_string($_COOKIE['admin']['password']);

ご想像のとおり、これは面倒になる可能性があります。ショートはあり$mysqli->real_escape_string()ますか、それともあなたたちは何をしますか?

4

3 に答える 3

3

あなたは私の時計の息子の下でPDOを介してMysqliを使用するつもりはありません!

まず、連想配列(例:$ db_data ['whatever_field'])が好きなので、連想配列を返さないため(デフォルトでは/回避策なし)、プリペアドステートメントを使用できません。

それは悪い言い訳です。

PDOStatement::fetch

最初のパラメータとして、に設定できるフェッチスタイルを受け入れますPDO::FETCH_ASSOC

また、

 PDO::setAttribute

PDO::ATTR_DEFAULT_FETCH_MODEデフォルトのフェッチスタイル、特に設定を選択できるようになりますPDO::FETCH_ASSOC

参照:

于 2012-10-16T14:13:31.087 に答える
1

エスケープする必要のないステートメントを準備する場合、それがステートメントを準備する主な目的の1つです。

ジェフリーによるPDOの使用理由の説明を支持します。また、mysqliは奇妙なライブラリであり、必要に応じてテストするのが非常に難しいことにも貢献したいと思います。参照によって変数をバインドする方法は、目には非常に簡単ではありません。個人的には、選択を再検討することをお勧めします。うまくいけば、いつかmysqlとmysqliを非推奨にします。

于 2012-10-16T14:19:09.773 に答える
0

という名前の関数がありますfetch_assoc。phpマニュアルhttp://php.net/manual/en/mysqli-result.fetch-assoc.phpからさらに読む

mysqli_result :: fetch_assoc --mysqli_fetch_assoc —結果行を連想配列としてフェッチします

于 2012-10-16T14:08:35.180 に答える