【发布时间】: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->error;来检查 mysql 是否显示任何消息或者您只是有问题用你的 mysql -
因为该参数本质上是一个 MySQL 端口,如果留空,它将被默认值(通常是 3306)替换,所以要么使用 3306(或任何你的 mysql 端口),要么将其留空。请记住 '' 与 null/blank 不同,您所做的是有效地尝试将其显式设置为 '' 这是错误的。