未定义变量:第101行的/dashboard/index.php中的con

未定义变量:第101行的/dashboard/index.php中的con,php,mysql,Php,Mysql,我试图在while循环中显示用户列表的状态(活动或暂停) 0=活动 1=暂停 <?php $result = mysqli_query($con,"SELECT status FROM `e_customer`"); while($row = mysqli_fetch_array($result)) { if ($row['status'] == "1") { echo "Suspended"; } else {

我试图在while循环中显示用户列表的状态(活动或暂停)

0=活动 1=暂停

<?php 
    $result = mysqli_query($con,"SELECT status FROM `e_customer`");
        while($row = mysqli_fetch_array($result)) {
        if ($row['status'] == "1") {
         echo "Suspended";
        } else {
          echo "Active";
        }
    } 
    ?>

上述情况给了我:

注意:第101行的未定义变量:con in/dashboard/index.php

警告:mysqli_query()要求参数1为mysqli,在第101行的/dashboard/index.php中给出空值


警告:mysqli_fetch_assoc()希望参数1是mysqli_result,第102行的/dashboard/index.php中给出的空值请务必回答注释中的问题。很多聪明人都想帮你

我不使用mysqli。如果我做了,我可能会尝试这样的东西

<?php
if ($stmt = mysqli_prepare($con, "SELECT status FROM e_customer WHERE account = ?")) {

    /* bind parameters for markers */
    mysqli_stmt_bind_param($stmt, "s", $username);

    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $status);

    mysqli_stmt_fetch($stmt);

    //is 0 really active and 1 suspended because than seems pretty backwards?
    if (!$status) { //per your comment then `!$status`. cringing...
        echo 'Active';
    } else {
        echo 'Suspended';
    }

    mysqli_stmt_close($stmt);
}

首先,我将直接在数据库中尝试您的查询,以确保其正常工作,然后尝试以下操作:

<?php 
    $result = mysqli_query($con,"SELECT status FROM `e_customer` WHERE account='$username'");
    $row = mysqli_fetch_assoc($result);
    echo ($row['status'] == "1") ? "Suspended" : "Active";
?>

如果仍然没有,则尝试对$con变量和$row变量执行var_转储。查看您是否正在连接和/或返回结果


…还有$username变量。

现在我们有了真正的PHP错误,我们可以处理它了

确保在查询之前初始化$con。您可能忘记了包含或其他内容。出于调试目的,将其添加到查询上方。让我知道这是否解决了你的问题

注意:mysqli_connect()需要4个参数

主机:127.0.0.1或本地主机或远程服务器的IP/DNS

用户:连接到数据库的用户名

密码:连接数据库的密码

DB Name:数据库的名称

因此,完整的代码如下所示:

<?php 
error_reporting( E_ALL );
ini_set('display_errors', 1);
$con = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

$result = mysqli_query($con,"SELECT status FROM `e_customer`") or die(mysqli_error($con));
    while($row = mysqli_fetch_array($result)) {
    if ($row['status'] == "1") {
     echo $row['account']." is Suspended</br>";
    } else {
      echo $row['account']." is Active</br>";
    }
} 
?>


表示要了解的语句。即使是这样也不安全!检查错误,我很肯定你会发现问题的。我有自己的想法。错误检查?您查看日志了吗?在查询中使用
mysqli\u error($con)
;告诉我们你看到了什么。可能是未定义的索引?“@PatrickSimard查询的列名称中有一个拼写错误,这就是我的钱所在,但OP似乎想保持沉默,或者留下了问题,或者不知道如何处理我写的内容。让我试试你的代码,是的,在这个例子中,0=active和1=suspended这是我非常确定的,甚至我可以在mysql控制台中看到它。当我使用给定的示例代码时,它不会在PHP站点中提供任何输出。空白页面可能意味着您面临PHP错误。检查日志或激活调试。由于OP拒绝回答任何问题,因此没有人会知道出了什么问题。帮助一个不帮助我们的人是很难的。你甚至可以称之为“浪费时间”。我们试过了……我们真的试过了。再见。我也试过你的方法,但现在它被固定为仅活动,即使mysql给出1(挂起)值。嗯,你说查询直接在mysql中工作,所以没有留下很多选项。我怀疑问题出在$con连接上。如果您只是尝试打印整个$row变量,而不是基于三元(如我所示)进行回音,会怎么样。这可能会有一些启发。对不起,这个想法有点漫不经心。首先,var_转储$result。如果它是假的,那就是你的连接,如果它是一个结果集,那么按照我前面说的做。当我尝试检查连接时,它似乎在工作,我尝试过它,它显示我为0和1,不管有什么。但问题是我无法将1和0转换为活动和暂停关键字。$r或$row?有时它就像打字一样简单?没有空白页。它只是没有结果,既不是活动的(0),也不是挂起的(1)。无论你何时回答任何问题,请保持耐心,我会检查建议,同时回答两个问题。至少你们应该知道有这么多的建议和答案蜂拥而至,每个人都在问不同的问题,比如调试、输出等等。如何一次获得所有信息并回复所有信息?在上面的建议中,有一些东西经过了测试。首先,我们要确保php调试被激活,并显示警告。然后我们确保用户名真的等于某个值。然后我们使用mysqli_error()以防出现查询错误。以上所有内容都解决了所提出的问题。试试看,告诉我们发生了什么。@PatrickSimard不是我的反对票;很抱歉看到你有一个。我编辑了你的答案,顺便说一句。Thx@Fred ii-!我忘了那块钱了。至于否决票,idk。。。有点可怜吧?哈哈,至少不是你hehe@PatrickSimard(我不会投你一票的,你的回答在我看来很好,不管怎么说,这篇文章是怎么写的。这就是所谓的经典“兔子洞”问题,我很抱歉看到你(和其他人)在那里被追赶。
<?php 
error_reporting( E_ALL );
ini_set('display_errors', 1);
$con = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

$result = mysqli_query($con,"SELECT status FROM `e_customer`") or die(mysqli_error($con));
    while($row = mysqli_fetch_array($result)) {
    if ($row['status'] == "1") {
     echo $row['account']." is Suspended</br>";
    } else {
      echo $row['account']." is Active</br>";
    }
} 
?>