2010-04-15 67 views
0

我做了一个简单的mysqli查询与代码ive之前使用过很多次,但从未有过这个问题发生在我身上。我用一个未知数量的列抓取整个表格(它经常变化,所以我不知道确切的值,也没有列名称)。我有一些使用元数据抓取所有内容并将其粘贴到数组中的代码。奇怪的PHP数组行为覆盖值与所有相同的值

这一切工作正常,但输出一团糟:

$stmt -> execute(); //the query is legit, no problems there 
$meta = $stmt->result_metadata(); 
while ($field = $meta->fetch_field()) 
{ 
    $params[] = &$row[$field->name]; 
} 
call_user_func_array(array($stmt, 'bind_result'), $params); 

while ($stmt->fetch()) 
{ 
    $pvalues[++$i] = $row; //$pvalues is an array of arrays. row is an array 
    //print_r($row); 
    print_r($pvalues[$i-1]); 
} 
$stmt -> close(); 

我假设$ p值有我要找的结果。我的表格目前有2行。 $ pvalues的数组长度为2. $ pvalues中的两行都完全相同。如果我使用:

print_r($row) 

它打印出两行的正确的价值观,但如果后来我检查什么是在$ p值是不正确的(1行被分配到$ p值这两个指数)。

如果我使用

print_r($pvalues[$i-1]) 

它打印正是我期望的那样,在同一行中表的两倍。

为什么数据没有分配给$ pvalues?我知道$ row在某一点上拥有正确的信息,但它正在被覆盖或丢失。

回答

0

它不应该是

while ($row = $stmt->fetch()) 

+0

由于他们使用bind_result,我认为它的目的是更新$ params中的变量,而不是明确地将fetch()的结果赋值给任何东西。 – octern 2012-05-11 16:49:54