将查询中的数据插入到数组中

时间:2014-12-17 12:35:10

标签: php mysql arrays mysqli

我有一个表单,我在屏幕上有单独的文本框,我想在每个文本框中插入一个瞳孔名称。每个文本框将包含一个学生名称。我有一个SQL查询,可以获取我为此表创建的类所需的所有学生。当SQL在PHPMyAdmin中运行时,查询返回我想要的确切值。

下面的代码是我希望从数据库中获取数据并将其放入数组中,以便我可以将每行放入文本框中。 但是,当我运行此代码时,完成的数组只包含1个元素,并且是查询找到的第二行。 查询找到的记录是;

+--------------------------+
| Pupil_Name (Column name) |
+--------------------------+
| Sam Price                |
| Keith mcgareth           |
+--------------------------+

最后只有Keith mcrgareth回应。两个记录都应该回应。

$pupilarray = array();
$pupilquery = mysqli_query($connection, "SELECT Pupil_Name FROM tbllogin WHERE Class_Name = 'Heulog'         AND Access_Level = 'pupil'");
while($row = mysqli_fetch_assoc($pupilquery)){
$pupilarray = $row['Pupil_Name'];
}
echo $pupilarray;

我创建了错误的数组吗?或者我错过了什么?

4 个答案:

答案 0 :(得分:1)

由于您在循环之后立即放置了回声,因此您只能获得最后一个值。如果您希望在循环继续时打印回声,请将回声置于内部:

while($row = mysqli_fetch_assoc($pupilquery)){
    $pupilarray = $row['Pupil_Name'];
    echo $pupilarray . '<br/>';
}

但是如果你的意图是创建一个数组,那么你应该在赋值时使用数组表示法来推送它:

$pupilarray = array(); // initialize an array named `pupilarray`
while($row = mysqli_fetch_assoc($pupilquery)){
    $pupilarray[] = $row['Pupil_Name'];
           //  ^ push the value inside
}

旁注:如果你认为你可以直接回应数组(echo $pupilarray)。不,你不能那样做。使用print_r()var_dump()查看其内容。

答案 1 :(得分:0)

您覆盖$pupilarray变量,不向数组添加内容。使用$pupilarray[] = ...

可以向数组添加内容

答案 2 :(得分:0)

在您的代码中,您获得最后一个值,请按照

进行更改

mysqli_fetch_assoc(mysqli_result $ result)。返回与获取的行

对应的关联数组
while($row = mysqli_fetch_assoc($pupilquery)){
$pupilarray[] = $row['Pupil_Name']; // value of Pupil_Name column put in array
$pupilarrayFull[] = $row; // Put each $row array in pupilarrayFull[] 
}

print_r($pupilarray) // your array is here of Pupil_Name column

print_r($pupilarrayFull) // your array is here of All column

答案 3 :(得分:0)

试试这个..

$pupilarray = array();
$pupilquery = mysqli_query($connection, "SELECT Pupil_Name FROM tbllogin WHERE Class_Name = 'Heulog'         AND Access_Level = 'pupil'");
while($row = mysqli_fetch_assoc($pupilquery)){
$pupilarray[] = $row['Pupil_Name'];
}
print_r($pupilarray);