mysql_stmtパラメーターを動的にバインドし、連想配列で結果を取得しようとしています。私はこの投稿をstackoverflowで見つけました。ここで、Amberは次のコードで回答を投稿しました。
元の投稿: プリペアドステートメントを使用して適切なmysqli拡張クラスを作成する方法は?
「あなたが実際にあなた自身のバージョンを書きたいと仮定すると(他の答えが示唆している既存のライブラリの1つを利用するのとは対照的に-そしてそれらも良いオプションです)...
ここに、調べるのに役立つと思われるいくつかの関数があります。1つ目は、クエリの結果を連想配列にバインドできます。2つ目は、2つの配列を渡すことができます。1つはキーの順序付き配列で、もう1つはそれらのキーのデータの連想配列で、そのデータをにバインドします。準備された声明:」
function stmt_bind_assoc (&$stmt, &$out) {
$data = mysqli_stmt_result_metadata($stmt);
$fields = array();
$out = array();
$fields[0] = $stmt;
$count = 1;
while($field = mysqli_fetch_field($data)) {
$fields[$count] = &$out[$field->name];
$count++;
}
call_user_func_array(mysqli_stmt_bind_result, $fields);
}
function stmt_bind_params($stmt, $fields, $data) {
// Dynamically build up the arguments for bind_param
$paramstr = '';
$params = array();
foreach($fields as $key)
{
if(is_float($data[$key]))
$paramstr .= 'd';
elseif(is_int($data[$key]))
$paramstr .= 'i';
else
$paramstr .= 's';
$params[] = $data[$key];
}
array_unshift($params, $stmt, $paramstr);
// and then call bind_param with the proper arguments
call_user_func_array('mysqli_stmt_bind_param', $params);
}
コードを調べてその機能を理解しようとしましたが、2番目の関数を正しく機能させましたが、最初の関数を利用できるようにするために何をすべきかわかりません。mysqli_result :: fetch_assoc()のような配列を取得するにはどうすればよいですか?
私はあなたが以前行っていたような方法で結果を利用できるようにしたいと思います:
while ($row = mysql_fetch_array($result)){
echo $row['foo']." ".$row['bar'];
}
私がこれでいくらかの進歩を遂げるのを手伝ってください:)