将查询移至MySQLi

时间:2018-02-05 19:07:14

标签: php mysql

我正在更新一些已弃用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的新版本没有。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您只需添加其中一个[,其中一个]

$account[] = $row["user"];
//      ^^ right here.

$account= $row["user"];表示每次循环执行时都会在$row["user"]中存储$account的值。 $account是一个字符串,每次都会获得一个新值。

$account[] = $row["user"];表示您将$row["user"]的每个值附加到数组中。

您不应该使用array_push。将单个值附加到数组是不合适的。如果数组未事先定义,它将无法完成