我正在尝试设置一个脚本来查询数据库以填充页面。这是我第一次尝试使用 PHP 进行数据库查询,如果问题真的很愚蠢,请原谅我。
我遇到的问题是页面似乎没有连接到数据库,因为前 2 个调试语句在浏览器中呈现,但之后没有。但是,当我使用 php.exe 在命令行上运行它时,它会正常运行并显示查询中的所有必需数据。
我在 Windows 7 上运行 wampserver 2.2,但它没有在任何浏览器中显示(在 Chrome、Firefox 和 IE9 中测试过。
我当前的代码如下。我也试过将连接移到头部,但这会阻止渲染任何东西,甚至 debug1。 die 声明在任何情况下都不会呈现。
<html>
<body>
debug1<br />
<?php
echo "debug2<br />";
$con = mysql_connect("hostname.of.database","username","password") die('Could not connect: ' . mysql_error());
echo "debug3<br />";
mysql_select_db("dbname",$con);
$result = mysql_query("SELECT * FROM Mail");
while ($row = mysql_fetch_array($result))
{
echo $row['Sender'];
echo "<br />";
echo $row['Subject'];
echo "<br />";
echo $row['Message'];
echo "<br />";
echo "<br />";
}
echo "debug4<br />";
mysql_close($con);
?>
</body>
</html>
编辑
将 die
语句移动到与连接相同的行后,我在页面中呈现以下内容:
Fatal error: Call to undefined function mysql_connect() in C:\wamp\www\test.php on line 10
编辑
我已将 extension=php_mysql.dll
添加到我的 php.ini 文件并重新启动服务器。我现在得到以下页面:
编辑
问题解决了。我的最后一个问题是我忘记用实际主机名替换 hostname.of.database
。
对于以后看到这里的人,解决方法如下:
- 在检索结果之前不要关闭连接
- 确保通过将
extension=php_mysql.dll
添加到 php.ini 文件来启用 php_mysql 扩展 - 重启服务器,清除浏览器缓存,然后重试。
最佳答案
因为您在获取结果之前关闭了连接:
// Don't do this!!!
//mysql_close($con);
while ($row = mysql_fetch_array($result))
{
echo $row['Sender'];
echo "<br />";
echo $row['Subject'];
echo "<br />";
echo $row['Message'];
echo "<br />";
echo "<br />";
}
除非您在打算创建另一个连接时特别需要释放一些内存或破坏连接,否则通常没有必要显式调用 mysql_close()
。它会在脚本执行完成时被调用。
更新:
发布您的错误消息后,您的 WAMP 堆栈似乎未启用 MySQL 扩展。命令行使用的 php.ini 文件可能与 Web 服务器使用的不同。通过调用 phpinfo()
找到正确的 php.ini 并启用 MySQL 扩展。
关于php - 为什么我的 PHP 页面没有正确查询数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8505763/