【问题标题】:Cannot Display Data from MySQL table无法显示 MySQL 表中的数据
【发布时间】:2012-12-12 13:07:13
【问题描述】:

我对 MySQL 数据库进行了非常标准的调用,但由于某种原因,我无法让代码正常工作。这是我所拥有的:

$mysqli = mysqli_connect("localhost","username","password");
if (!$mysqli)
  {
  die('Could not connect: ' . mysqli_error($mysqli));
  }
session_start();
$sql = "SELECT * FROM jobs ORDER BY id DESC";
$result = $mysqli->query($sql);
$num_rows = mysqli_num_rows($result);

现在,首先,我知道它连接正确,因为我没有得到 die 方法,而且我之前在其中添加了一个 else 条件并且它已检查出来。然后页面显示,但我收到错误:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in blablabla/index.php on line 11

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in blablabla/index.php on line 12

我已经仔细检查了我的数据库,并且有一个名为 jobs 的表,其中有一行“id”(它是主行)。让我感到困惑的是,这是我从我建立的另一个网站上复制和粘贴的代码,由于某种原因,该代码在这个网站上不起作用(我显然复制并粘贴了它,然后只是相应地更改了表名和行)。

我看到错误并尝试:

$num_rows = $mysqli_result->num_rows;
$row_array = $mysqli_result->fetch_array;

并修复了错误,但没有传递任何数据(因为显然 $mysqli_result 没有价值)。我不知道为什么会出现这样的错误(它与其他站点的 MySQL 或 PHP 版本不同)?

有人可以帮我找出问题所在吗?非常感谢。抱歉,如果我忽略了一些超级简单的事情,我已经研究了一段时间了。

【问题讨论】:

  • 您没有检查mysqli_query 的返回值。它可以返回布尔值而不是语句句柄。
  • 一件事,把你的session_start(); 放在mysqli_connect 上面,因为如果发生错误它会生成输出。这也会导致 session_start 失败。
  • 您确定要连接到本地主机上的正确数据库吗?我在上面的代码片段中没有看到选择数据库的位置?

标签: php mysql mysqli


【解决方案1】:

你没有选择数据库

$mysqli = mysqli_connect("localhost","username","password","database");

【讨论】:

  • 啊,看那个。这正是发生的事情。那是我没有复制并尝试从头开始做的一部分。感谢您的快速回答!
【解决方案2】:

问题是你没有选择数据库。

将此代码用于选择数据库。

$mysqli = mysqli_connect("localhost","username","password");
mysqli_select_db("db_name",$mysqli);

您必须选择数据库才能触发 mysql 查询,否则会报错。

【讨论】:

    【解决方案3】:

    我相信 schtever 是正确的,我不认为你在选择数据库。它不在代码片段中,如果您在线搜索,您会看到其他人有类似的错误,这是因为未选择数据库。如果您在检查其他任何内容之前选择了数据库,请告知我们。谢谢。

    【讨论】:

      【解决方案4】:

      试试这个:

       session_start();
       $mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
            if ($mysqli->connect_errno)
             {
                 echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
                 $mysqli->close();
             }
                 $query ="SELECT * FROM jobs ORDER BY id DESC";
                  $values = $mysqli->query($query);
                      if($values->num_rows != 0)
                          {
                              while($row = $values->fetch_assoc())
                              { 
                                  //your results echo here
                              } 
                          }
                          else
                              {
                                  //if no results say so here
                              }
      

      【讨论】:

        【解决方案5】:

        mysqli_connect查看本手册,您可以在此功能中直接选择数据库。

        【讨论】:

          猜你喜欢
          • 2019-07-24
          • 1970-01-01
          • 2021-11-23
          • 1970-01-01
          • 1970-01-01
          • 2013-05-09
          • 2015-06-26
          • 1970-01-01
          • 2013-12-03
          相关资源
          最近更新 更多