我正在更新一些已弃用MySQL函数的旧代码。但由于某些原因,我无法从专栏中获得所有结果。奇怪的是,如果我直接在服务器上运行查询,我会得到所有结果。所以这是PHP获取结果的问题,而不是MySQL服务器或我的查询。
以下是新旧代码:
我当前更新的代码:
$sql = "SELECT user, monitor FROM users WHERE `status` = 'y'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
// This works. It shows all results
echo $row["user"];
// This does not work! Only shows one result:
$account= $row["user"];
}
else {
echo 'No results';
}
当我直接在DB服务器上使用该查询时,我得到了所有结果。所以SQL查询是正确的。我实际上也可以在PHP中获得所有结果,如果我直接回显行:
echo $row["user"];
但出于某种原因,当我尝试将它与带变量的PHP一起使用时,它只列出一个用户结果。
过去我用过这个,但 mysql_fetch_array 功能现已弃用
while ($row = mysql_fetch_array($result)) {
array_push($data, $row["user"]);
}
foreach($data as $value) {
$account = $value
}
我不能再使用我以前的代码了,因为那些MySQL功能今天已经过时了。我需要将结果写入文件,我的旧方法工作正常。使用mysqli的新版本没有。
有什么建议吗?
答案 0 :(得分:0)
您只需添加其中一个[
,其中一个]
。
$account[] = $row["user"];
// ^^ right here.
$account= $row["user"];
表示每次循环执行时都会在$row["user"]
中存储$account
的值。 $account
是一个字符串,每次都会获得一个新值。
$account[] = $row["user"];
表示您将$row["user"]
的每个值附加到数组中。
您不应该使用array_push
。将单个值附加到数组是不合适的。如果数组未事先定义,它将无法完成。