我正在尝试设置一个查询数据库以填充页面的脚本。这是我第一次尝试使用PHP进行数据库查询,所以请原谅我这个问题是非常愚蠢的。
我遇到的问题是页面似乎没有连接到数据库,因为前两个调试语句在浏览器中呈现,但后面没有任何内容。但是,当我使用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扩展答案 0 :(得分:3)
因为您在获取结果之前关闭了连接:
// 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扩展。命令行可以使用与Web服务器使用的不同的php.ini文件。通过调用phpinfo()
找到正确的php.ini并启用MySQL扩展。
答案 1 :(得分:1)
在你继续前进之前的一些建议 -
ini_set('display_errors','On');
AND error_reporting(E_ALL);
$conn = mysql_connect($host, $user, $pass) or die(mysql_error());
晒。
答案 2 :(得分:0)
您可能需要打开php错误报告以获取更详细的错误消息:
<?php ini_set(‘display_errors’,1);
error_reporting(E_ALL|E_STRICT); ?>
您可以在此处详细了解: http://php.net/manual/en/function.error-reporting.php