PHP - MySQL查询将同一行分配给数组中的两个不同索引


PHP - MySQL Query assigning same row to two different indexes in array

我有一个查询,应该从数据库中获得两行数据,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;就行了。