我在这里有一个数据库snippit代码......我会发布相关的行而不进行错误检查以使其变小...
if ($stmt->bind_result($row[0], $row[1]) === false) etc...
Run Code Online (Sandbox Code Playgroud)
然后下面我...
<pre><code>
//fill the array up with an array of rows, then increment $ddp.
//$data[$ddp] is the row,
//$data[$dpp][0] is the rows first argument,
//$data[$dpp][1] is the rows 2nd argument returned etc...
$ddp = 0; // this increments up every fetch
while ($stmt->fetch()) {
$data[$ddp][0] = $row[0];
$data[$ddp][1] = $row[1];
$ddp++;
}
</code></pre>
Run Code Online (Sandbox Code Playgroud)
我上面的方式工作....但这里是我以前做过的事情和一些奇怪的事情......
<pre><code>
$ddp = 0; // this increments up every fetch
while ($stmt->fetch()) {
$data[$ddp++] = $row;
// I ECHOd out $row here... and it did fetch 2 different rows...
}
</code></pre>
Run Code Online (Sandbox Code Playgroud)
会发生什么......当我这样做的时候......
$data[$ddp++] = $row;
Run Code Online (Sandbox Code Playgroud)
$data[0][0]是一样的$data[1][0].
为什么然后如果$row在2次读取中有不同的值... $data最终如何使2个数组相同?
我甚至试过了
$data[] = $row;
Run Code Online (Sandbox Code Playgroud)
和相同的结果.我的修复是......
while ($stmt->fetch()) {
$data[$ddp][0] = $row[0];
$data[$ddp][1] = $row[1];
$ddp++;
}
Run Code Online (Sandbox Code Playgroud)
为什么?
很抱歉,如果这不是正确的地方,但我确实提前找到了解决方案,为了节省时间,我将答案和问题放在一起.
你的两个作业正在做两件微妙不同的事情.
while ($stmt->fetch()) {
$data[$ddp][0] = $row[0];
$data[$ddp][1] = $row[1];
$ddp++;
}
Run Code Online (Sandbox Code Playgroud)
这将在数组中创建两个条目 - 第一个将具有索引[0][0],并在其中分配值$row[0],依此类推.
另一方面,这个:
while ($stmt->fetch()) {
$data[$ddp++] = $row;
// I ECHOd out $row here... and it did fetch 2 different rows...
}
Run Code Online (Sandbox Code Playgroud)
被添加单个行到数据库中,并添加全的$row,以$data[0]通过在第一次运行.因此,从数据库返回的任何内容都会按原样添加 - 如果您从中获取数组fetch(),那么您将在数组中添加一个数组.