PHP数组\推送数据库行并不能对所有行都起作用(使用WHILE循环)

PHP数组\推送数据库行并不能对所有行都起作用(使用WHILE循环),php,mysql,database,arrays,Php,Mysql,Database,Arrays,我希望为数据库中的每一行在数组变量中添加一个_u。 在我的testTable中,我目前有两行,但是当运行此代码时,只有一行被“推”到数组中 $result = mysql_query("SELECT * FROM testTable ORDER BY dateAdded DESC"); while($row = mysql_fetch_array($result)) { $Array = array(); array_push($Array, array('id' => $

我希望为数据库中的每一行在数组变量中添加一个_u。 在我的testTable中,我目前有两行,但是当运行此代码时,只有一行被“推”到数组中

$result = mysql_query("SELECT * FROM testTable ORDER BY dateAdded DESC");
while($row = mysql_fetch_array($result)) {
    $Array = array();
    array_push($Array, array('id' => $row['id'], 'title' => $row['title'], 'desc' => $row['desc'],  'image' => $row['image'], 'dateAdded' => $row['dateAdded']);
}

print_r($Array);
输出:

Array ( [0] => Array ( [id] => 2 [title] => test test test [desc] => text text text [image] => http://domain.com/sampleImg.png [dateAdded] => 2012-06-13 15:58:43 ) )    
例如,当我试图呼应标题时,它起了作用。。。像这样:

while($row = mysql_fetch_array($result)) {
    echo $row['title'];
}
$Array应该是$productsArray,并且应该在您的循环之外

$result = mysql_query("SELECT * FROM testTable ORDER BY dateAdded DESC");
$productsArray= array();
while($row = mysql_fetch_array($result)) {
    array_push($productsArray, array('id' => $row['id'], 'title' => $row['title'], 'desc' => $row['desc'],  'image' => $row['image'], 'dateAdded' => $row['dateAdded']);
}

print_r($productsArray);

虽然@johncode的答案会起作用,但如果您将代码的结构改为这样会更好:

$result = mysql_query("SELECT id, title, `desc`, image, dateAdded FROM testTable ORDER BY dateAdded DESC");
$productsArray = array();
while ($row = mysql_fetch_array($result)) {
    $productsArray[] = $row;
}

print_r($productsArray);
如果您只打算使用字段的某个子集,那么选择*是浪费时间的。重建要添加到$productsArray的数组也很浪费,它本质上等于mysql_fetch_数组返回的数组


编辑:还值得注意的是,mysql驱动程序不再推荐在新的应用程序中使用。我建议您要么使用,要么改用。

这将为while循环的每个迭代重置$productsArray。我怀疑这是您想要的行为。请确保它不在您的循环范围内。嗯,是的,$数组实际上是从$productsArray更改而来的。。仍在编辑中。如果您建议重新构造代码,那么不要对mysql结果执行强制性失败测试:。。。或者是迪厄错误。假设查询成功是问题/bug的主要来源。@MarcB:那将是添加代码,而不是重新构造。我把它作为一个练习留给OP来添加他自己的错误处理:-或者更好的是,建议扔掉古老的mysql库——现在比IE6还要糟糕。认真地说,简单优化技术+1@raina77ow:我同意,我已经好几年没有使用mysql了。我在回答中添加了推荐的备选方案。