我有一个查询,应该从数据库中获得两行数据,a和b。当我在mysqli_stmt_fetch
循环内vardump时,我得到a和b的数据,然后在循环内,我将其分配为数组($Array[] = $result
)的成员。然而,当我然后vardump $Array
时,b的数据在数组的两个索引中。
预期结果是a和b的数据都在数组中,但b的数据只有两个实例。
if ($Query = mysqli_prepare($MySQLObj, "SELECT x.c, x.d, x.e, x.f, y.g, y.h FROM x INNER JOIN y ON (y.i = x.j) WHERE x.k = 0 OR x.k = 1 ORDER BY x.l ASC LIMIT 10;")) // Prepare Query
{
mysqli_stmt_execute($Query); // Execute query
mysqli_stmt_bind_result($Query, $Data["m"], $Data["n"], $Data["o"], $Data["p"], $Data["q"], $Data["r"]); // Bind result to array elements
while (mysqli_stmt_fetch($Query)) // Fetch result
{
$DataArray[] = $Data; // This doesn't work
//var_dump($Data);
}
mysqli_stmt_close($Query); // Close query
}
var_dump($DataArray);
正常你不能_bind_result
$ Data["m"],$ Data["n"],$ Data["o"],…数组
需要变量,例如$Data_m , $Data_n ....
但是你可以像这样设置$变量
$Query->store_result();
$variables = array();
$data = array();
$variables[] = &$Data["m"];
$variables[] = &$Data["n"];
$variables[] = &$Data["o"];
....
call_user_func_array(array($Query, 'bind_result'), $variables);
如果您不想手动设置$variables[],请尝试
$meta = $Query->result_metadata();
while($field = $meta->fetch_field())
$variables[] = &$Data[$field->name];
把$DataArray[] = $Data;
改成$DataArray[] = &$Data;
就行了。