将MYSQL结果放入PHP数组中

时间:2017-02-06 18:00:04

标签: php mysql

我在将mysql数据库中的数据检索到php数组时遇到了问题。如果我执行下面的代码,查询将获取一些相应的行两次甚至3次。 我有一个列出的文件数据库,其中包含名称和上传日期。 假设我有4个文件(经过测试): File1,File2,File3,File4。 代码将回显(如果它有帮助):

File1 and its date
File1 and its date
File4 and its date
File2 and its date
File2 and its date
File3 and its date
File3 and its date
File4 and its date
File4 and its date

以下是代码:

$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'];
}

我想让代码只回显一次并按正确的顺序(upload_id(自动递增)的降序)

2 个答案:

答案 0 :(得分:1)

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

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

但是,如果您在查询中指定列,则更容易:

$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_array = $query->fetchAll(PDO::FETCH_ASSOC); ,但只想显示:

$new_array

答案 1 :(得分:0)

这应该这样做:

$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'];
}