【问题标题】:My PHP page not retrieving anything from the MySQL database我的 PHP 页面没有从 MySQL 数据库中检索任何内容
【发布时间】:2014-01-06 11:09:18
【问题描述】:

我正在尝试在 Amazon 的虚拟机上设置 PHP 和 mySQL。我尝试按照这些说明进行操作,但没有收到错误消息。一切似乎都运行良好。我做了一个测试 PHP 文件,它就像一个魅力。然后我试图从我新设置的数据库中检索一些东西……我得到一个空白页。

<?php
$conn =  new mysqli('localhost', '[DB NAME]_user', '[USER PASSWORD]', '[DB NAME]', '');
$result = $conn->query("SELECT message FROM test;");
$row = $result->fetch_assoc();
echo $row['message'];
?>

关于我可以做些什么来检查哪里出错的任何想法?我应该在终端中检查数据库是否真的返回任何值?

感谢任何帮助。

附加信息:

我尝试了 Kęstutis 的建议。

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

$conn = new mysqli('localhost', '[USER]', '[USER PASSWORD]', '[DB NAME]');
if ($conn->connect_errno) {
die($conn->connect_error);
}

if (!($result = $conn->query("SELECT message FROM test"))) {
die($conn->error);
}

while ($row = $result->fetch_assoc()) {
print_r($row['message']);
}

它从 $row['message'] 返回字符串。没有错误消息。

然后我看到了

$conn = new mysqli('localhost', '[USER]', '[USER PASSWORD]', '[DB NAME]');

和我最初的不一样

$conn =  new mysqli('localhost', '[DB NAME]_user', '[USER PASSWORD]', '[DB NAME]', '');

所以我将行更改为我最初的行,最后带有 ''。现在我收到一条错误消息:

警告:mysqli::mysqli() 期望参数 5 很长,字符串在 /var/www/html/index.php 第 5 行给出 警告:mysqli::query(): 无法获取第 10 行 /var/www/html/index.php 中的 mysqli 警告:main():无法在第 11 行的 /var/www/html/index.php 中获取 mysqli

为什么?

【问题讨论】:

  • 您确定您的数据库中有数据吗?
  • 您可以尝试做很多事情来获取某种类型的错误消息,即:error_reporting(E_ALL); ini_set("display_errors", 1); 最后但并非最不重要的一点是尝试echo $conn-&gt;error; 来检查 mysql 是否显示任何消息或者您只是有问题用你的 mysql
  • 因为该参数本质上是一个 MySQL 端口,如果留空,它将被默认值(通常是 3306)替换,所以要么使用 3306(或任何你的 mysql 端口),要么将其留空。请记住 '' 与 null/blank 不同,您所做的是有效地尝试将其显式设置为 '' 这是错误的。

标签: php mysql


【解决方案1】:

试试这样的:

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

$conn = new mysqli('localhost', '[USER]', '[USER PASSWORD]', '[DB NAME]');
if ($conn->connect_errno) {
    die($conn->connect_error);
}

if (!($result = $conn->query("SELECT message FROM test"))) {
    die($conn->error);
}

while ($row = $result->fetch_assoc()) {
    print_r($row['message']);
}

这样你应该看到它在什么时候失败了,如果它完全失败了

【讨论】:

  • 使用此代码,它确实从 ($row['message']) 返回值。没有错误消息,只是我放在那里的字符串恰好是“Bajskorv!”。所以现在我想知道为什么最初的 php 代码给了我一个空白屏幕? (有关详细信息,请参阅初始帖子)。谢谢分配!
【解决方案2】:

检查连接错误:

 $conn =  new mysqli('localhost', '[DB NAME]_user', '[USER PASSWORD]', '[DB NAME]', '');
 if (!$conn) {
      die('Could not connect: ' . mysql_error());
 }

尝试选择数据库:

 $conn->select_db("database_name");

【讨论】:

  • 他在 MySQLi 构造函数中选择了 db,因此不需要第二次检查它
猜你喜欢
  • 2016-03-29
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多