Php 基本的mysql查询没有结果

Php 基本的mysql查询没有结果,php,mysql,Php,Mysql,我得到一个简单的查询,如下所示: $con = mysqli_connect("host","username","password","default_database"); if(mysqli_connect_errno($con)) { mysqli_connect_error(); } else { $query = "SELECT * FROM `users_t`"; $result = mysqli_query($query) or die (mysql_e

我得到一个简单的查询,如下所示:

$con = mysqli_connect("host","username","password","default_database");

if(mysqli_connect_errno($con))
{
    mysqli_connect_error();
}
else
{
    $query = "SELECT * FROM `users_t`";
    $result = mysqli_query($query) or die (mysql_error());
    while($row = mysqli_fetch_assoc($result))
    {
        echo $row['email'];
    }

}
运行这个查询完全没有给我任何东西。没有错误,但同时没有结果。我不知道怎么了,请帮帮我

$result = mysqli_query($query) or die (mysql_error());
需要一个mysqli资源链接以及它的not
mysql\u error()


看起来这里可能发生了一些事情:

  • 根据,您应该检查
    $con
    而不是
    mysqli\u connect\u errno($con)
    在您的
    if
    语句中
  • 当遇到连接错误时,您正在调用error函数,但没有打印它
  • 根据,第一个参数应该是数据库连接,第二个参数是查询本身
  • 当查询出错时,您正在调用
    mysql\u error()
    ,而您应该调用
    mysqli\u error()
    ,并将连接传递给它。同样,根据
  • 尝试一下,看看这是否解决了您的问题:

    <?php
    $con = mysqli_connect("host","username","password","default_database");
    
    if(!$con) {
      print mysqli_connect_error();
    } else {
      $query = "SELECT * FROM `users_t`";
      $result = mysqli_query($con, $query) or die (mysqli_error($con));
      while($row = mysqli_fetch_assoc($result)) {
        echo $row['email'];
      }
    }
    

    PHP是区分大小写的,因此有一个很好的变化,即数据库中的列实际上被命名为
    Email
    ,然后在选中
    $row['Email']
    时没有结果,因为
    E
    必须是大写

    您可以做的是确保在PHP中使用正确的大小写,或者只选择所需的字段。MYSQL不区分大小写,因此如果您执行以下操作,它将起作用

    还有一种检查大小写是否正确的好方法:使用
    var\u dump($row)
    (我将其添加到代码中只是为了向您展示)


    您的模式是什么样子的?那张表中有数据吗?表
    users\u t
    中有数据。它包含8个不同的列,其中
    email
    是其中之一。您可以在select语句中输入一列或两列您知道有数据的内容,并在while循环中的echo中添加一段文本,以确保您真正进入while循环吗?@Atalon感谢您提到在while循环中添加文本。我使用了Joshua Burns在下面发布的代码,它可以正常工作。我发现了问题:电子邮件地址包含特殊字符,即“@”!查询问题已经解决了,现在只是为了解决这个问题。我很难看出@字符会有什么问题。这是一个非常标准的字符,无论您使用什么编码,都应该支持它。您可以尝试将
    echo
    行替换为
    var\u dump($row)
    查看$row变量中的实际内容。您的代码运行得非常好,问题在于电子邮件地址包含特殊字符。使用您的代码,我可以检索包含普通字母的其他字段(在获取电子邮件地址时是@massing)。我应该更改数据库加密吗?加密无法解决您的问题。。您可以将其编码更改为类似UTF-8的格式,这可能会解决您的问题。我正在使用UTF-8编码和电子邮件列的VARCHAR数据类型,VARCHAR是否支持“@”?
    @
    甚至不是特殊字符,它是ASCII标准的一部分。UTF-8是ASCII标准的扩展。您收到的确切错误是什么?我不认为这是
    @
    字符…刚刚试过,效果很好,结果我在列名上有一个输入错误…我想历史会重演。谢谢你的帮助!
    <?php
    $con = mysqli_connect("host","username","password","default_database");
    
    if(!$con) {
      print mysqli_connect_error();
    } else {
      $query = "SELECT * FROM `users_t`";
      $result = mysqli_query($con, $query) or die (mysqli_error($con));
      while($row = mysqli_fetch_assoc($result)) {
        echo $row['email'];
      }
    }
    
    $con = mysqli_connect("host","username","password","default_database");
    
    if(mysqli_connect_errno($con))
    {
        mysqli_connect_error();
    }
    else
    {
        $query = "SELECT email FROM `users_t`";
        $result = mysqli_query($query) or die (mysql_error());
        while($row = mysqli_fetch_assoc($result))
        {
            echo $row['email'];
            var_dump($row);
        }
    
    }