Hi我有一个简单的数据库连接测试php文件(index.php),它应该用include语句调用另一个页面(output.html.php),但它似乎不起作用。请帮忙。下面是这两个文件的代码。非常感谢。
index.php
:
<?php
try
{
$pdo = new PDO('mysql:host=localhost;dbname=ijdb', 'ijdbuser', 'mypassword');
$pdo->setAttribute(PDO::ALTER_ERRMODE, PDO::ERRMODE_EXCEPTION);
$PDO->exec('SET NAMES "utf8");
}
catch (PDOException $e)
{
$output = 'Unable to connect to the database server.';
include = 'output.html.php';
exit();
}
$output = 'Database connection established.';
include 'output.html.php';
?>
output.html.php
:
<!DOCTYPE html>
<html lang="en-us">
<meta charset="UTF-8" >
<title>DB Example</title>
<head>
</head>
<body>
<p>
<?php echo $output; ?>
</p>
</body
</html>
我只看到一页空白。
include 'output.html.php';
不是
include = 'output.html.php';
移除=
index.php:
<?php
try
{
$pdo = new PDO('mysql:host=localhost;dbname=ijdb', 'ijdbuser', 'mypassword');
$pdo->setAttribute(PDO::ALTER_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->exec("SET CHARACTER SET utf8");//$PDO->exec('SET NAMES "utf8");
header("location:output.html.php?msg=Database%20connection%20established");
}
catch (PDOException $e)
{
header("location:output.html.php?msg=Unable%20to%20connect%20to%20the%20database%20server");
}
?>
我所理解的是,如果你包含文件,它会重定向到空白的页面,因此不会显示任何消息($output)。如果你应用重定向方法,你会移动到失败和成功时所需的消息显示。
output.html.php:-
<!DOCTYPE html>
<html lang="en-us">
<meta charset="UTF-8" >
<title>DB Example</title>
<head>
</head>
<body>
<p>
<?php if(isset($_GET['msg'])){echo $_GET['msg'];} ?>
</p>
</body
</html>
可能你在问题中错报了字符串的末尾,并且已经解决了它。无论如何,这里有一个小错误:index.php,首先尝试{}块:
...
$PDO->exec('SET NAMES "utf8");
...
应该是:
$PDO->exec('SET NAMES "utf8"');
希望它能帮助你。正如你在答案和评论中看到的,在PHP开发环境中启用错误是解决这种"死亡的白屏幕"错误的最佳方法。以下是关于最后一个主题的参考资料:http://www.php.net/manual/en/errorfunc.configuration.php#89648