将MYSQL结果放入PHP数组

将MYSQL结果放入PHP数组,php,mysql,Php,Mysql,我在将mysql数据库中的数据检索到php数组时遇到了一个问题。如果执行下面的代码,查询将获取一些对应的行两次甚至三次。 我得到了一个列有文件名和上传日期的数据库。 假设我有4个文件(这是经过测试的): 文件1,文件2,文件3,文件4。 代码将回显(如果有帮助): 代码如下: $query = $pdo_con->query("SELECT * FROM uploads WHERE active = 1 and owner = '$current_user' Order By uploa

我在将mysql数据库中的数据检索到php数组时遇到了一个问题。如果执行下面的代码,查询将获取一些对应的行两次甚至三次。 我得到了一个列有文件名和上传日期的数据库。 假设我有4个文件(这是经过测试的): 文件1,文件2,文件3,文件4。 代码将回显(如果有帮助):

代码如下:

$query = $pdo_con->query("SELECT * FROM uploads WHERE  active = 1 and owner = '$current_user' Order By upload_id DESC");

while($r = $query->fetch(PDO::FETCH_ASSOC)) {
    $new_array[] = $r;
    $new_array[$r['name']] = $r;
    $new_array[$r['uploaded']] = $r;
}
foreach($new_array as $array){
    echo $array['name'];
    echo $array['uploaded'];
}

我希望代码只回显每个文件一次,并按照正确的顺序(上传id的降序(自动递增))

创建数组的方式是通过循环每次给3个元素。尝试:

$i;
while($r = $query->fetch(PDO::FETCH_ASSOC)) {
    $new_array[$i][$r['name']] = $r['name'];
    $new_array[$i][$r['uploaded']] = $r['uploaded'];
    $i++;
}
但是,如果在查询中指定列,则更容易:

SELECT name, uploaded FROM uploads
    WHERE  active = 1 AND owner = '$current_user'
    ORDER BY upload_id DESC
然后:

或者,如果您不需要
$new_数组
,只想显示:

while($r = $query->fetch(PDO::FETCH_ASSOC)) {
    echo $r['name'];
    echo $r['uploaded'];
}
这应该做到:

$query = $pdo_con->query("SELECT * FROM uploads WHERE  active = 1 and owner = '$current_user' Order By upload_id DESC");

while($r = $query->fetch(PDO::FETCH_ASSOC)) {
    echo $r['name'];
    echo $r['uploaded'];
}
或:


您正在将
$row
多次添加到
$new\u数组中。每行3次。如果您希望它显示一次,那么只添加一次。此外,pdo确实有一个
fetchAll
方法,可以将所有行放入一个数组中。如果运行查询,结果中会出现多行吗?如果您没有使用
$new\u array
执行任何操作,为什么不直接就地回显或使用
fetchAll()
并循环执行该操作?谢谢!你的第二个选择解决了这个问题
while($r = $query->fetch(PDO::FETCH_ASSOC)) {
    echo $r['name'];
    echo $r['uploaded'];
}
$query = $pdo_con->query("SELECT * FROM uploads WHERE  active = 1 and owner = '$current_user' Order By upload_id DESC");

while($r = $query->fetch(PDO::FETCH_ASSOC)) {
    echo $r['name'];
    echo $r['uploaded'];
}
$query = $pdo_con->query("SELECT * FROM uploads WHERE  active = 1 and owner = '$current_user' Order By upload_id DESC");

while($r = $query->fetch(PDO::FETCH_ASSOC)) {
    $new_array[] = ['name'=>$r['name'], 'uploaded'=>$r['uploaded']];
}
foreach($new_array as $array){
    echo $array['name'];
    echo $array['uploaded'];
}