我正在尝试动态绑定 mysql_stmt 参数并在关联数组中获取结果。我在 stackoverflow 上找到了这篇文章,其中 Amber 使用以下代码发布了答案:
原帖: 如何使用准备好的语句制作正确的 mysqli 扩展类?
“假设您实际上想要编写自己的版本(而不是使用其他答案建议的现有库之一 - 这些也是不错的选择)......
这里有几个功能,您可能会发现它对检查很有用。第一个允许您将查询结果绑定到关联数组,第二个允许您传入两个数组,一个是有序的键数组,另一个是这些键的关联数据数组,并将该数据绑定到准备好的声明:”
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);
}
我尝试研究代码以了解它的作用,并且我已经使第二个功能正常工作,但我不知道应该做什么才能使用第一个功能。如何使用它来检索类似于 mysqli_result::fetch_assoc() 的数组?
我希望能够以您过去使用的方式利用结果:
while ($row = mysql_fetch_array($result)){
echo $row['foo']." ".$row['bar'];
}
请帮助我在这方面取得一些进展:)