为什么我的PHP页面不能正确查询数据库?

为什么我的PHP页面不能正确查询数据库?,php,mysql,wampserver,Php,Mysql,Wampserver,我正在尝试设置一个脚本来查询数据库以填充页面。这是我第一次尝试使用PHP进行数据库查询,如果问题真的很愚蠢,请原谅 我遇到的问题是,页面似乎没有连接到数据库,因为前两个调试语句在浏览器中呈现,但它们之后的任何语句都没有。但是,当我使用php.exe在命令行上运行它时,它会正常运行并显示查询中所有必需的数据 我在Windows7上运行WampServer2.2,它不会显示在任何浏览器中(在Chrome、Firefox和IE9中测试) 下面是我当前的代码。我也尝试过将连接移动到头部,但这会阻止任何东

我正在尝试设置一个脚本来查询数据库以填充页面。这是我第一次尝试使用PHP进行数据库查询,如果问题真的很愚蠢,请原谅

我遇到的问题是,页面似乎没有连接到数据库,因为前两个调试语句在浏览器中呈现,但它们之后的任何语句都没有。但是,当我使用php.exe在命令行上运行它时,它会正常运行并显示查询中所有必需的数据

我在Windows7上运行WampServer2.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>
编辑

我已经在php.ini文件中添加了
extension=php_mysql.dll
,并重新启动了服务器。我现在看到以下页面:

编辑

问题解决了。我的最后一个问题是,我忘记用实际的主机名替换.database的
hostname.of

对于将来阅读本文的人,解决方案如下:

  • 在检索结果之前不要关闭连接
  • 通过向php.ini文件添加
    extension=php\u mysql.dll
    ,确保启用了php\u 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($con);
    while($row=mysql\u fetch\u数组($result))
    {
    echo$row['Sender'];
    回声“
    ”; echo$row['Subject']; 回声“
    ”; echo$row['Message']; 回声“
    ”; 回声“
    ”; }
    除非在创建另一个连接时特别需要释放一些内存或破坏连接,否则通常不需要显式调用
    mysql\u close()
    。脚本完成执行时将调用它

    更新:
    发布错误消息后,您的WAMP堆栈似乎未启用MySQL扩展。命令行使用的php.ini文件可能与web服务器使用的不同。通过调用
    phpinfo()找到正确的php.ini
    并启用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($con);
    while($row=mysql\u fetch\u数组($result))
    {
    echo$row['Sender'];
    回声“
    ”; echo$row['Subject']; 回声“
    ”; echo$row['Message']; 回声“
    ”; 回声“
    ”; }
    除非在创建另一个连接时特别需要释放一些内存或破坏连接,否则通常不需要显式调用
    mysql\u close()
    。脚本完成执行时将调用它

    更新:
    发布错误消息后,您的WAMP堆栈似乎未启用MySQL扩展。命令行使用的php.ini文件可能与web服务器使用的不同。通过调用
    phpinfo()找到正确的php.ini
    并启用MySQL扩展。

    您可能希望打开php错误报告以获取更详细的错误消息:

    <?php ini_set(‘display_errors’,1);
    error_reporting(E_ALL|E_STRICT); ?>
    
    
    
    您可以在此处阅读更多信息:

    您可能希望打开php错误报告以获取更详细的错误消息:

    <?php ini_set(‘display_errors’,1);
    error_reporting(E_ALL|E_STRICT); ?>
    
    
    
    您可以在此处阅读更多信息:

    在您继续之前,有几条建议-

  • 通过设置
    ini_set('display_errors','On');
    error_reporting(E_ALL);
  • 尝试连接到数据库后,请确保连接成功,否则输出错误,这将帮助您发现问题,如下所示:
  • $conn=mysql\u connect($host,$user,$pass)或die(mysql\u error());
    

    Shai.

    在你继续之前,有几条建议-

  • 通过设置
    ini_set('display_errors','On');
    error_reporting(E_ALL);
  • 尝试连接到数据库后,请确保连接成功,否则输出错误,这将帮助您发现问题,如下所示:
  • $conn=mysql\u connect($host,$user,$pass)或die(mysql\u error());
    

    Shai.

    您关闭连接太早。mysql\u fetch\u array()函数需要连接保持打开状态。有关详细信息,请查看错误日志,或将此内容放在脚本顶部:
    ini\u集(“display\u errors”,true)
    -这将为您提供有关此问题和其他问题的更多信息。我建议您在熟悉使用
    mysql\u查询
    API之前,先花时间学习如何使用mysqli,因为这些API不安全,并且在PHP6中已被弃用。您的致命错误将表明PHP mysql扩展未从PHP.ini加载。您可以太快关闭了连接。mysql_fetch_array()函数需要连接保持打开状态。有关详细信息,请查看错误日志,或将其放在脚本的顶部:
    ini_集(“display_errors”,true)
    -这将为您提供有关此问题和其他问题的更多信息。我建议您在熟悉使用
    mysql\u查询
    API之前,先花些时间学习如何使用mysqli,因为这些API不安全,并且在PHP6中被弃用。您的致命错误将表明PHP mysql扩展未从PHP.ini加载。此did没有解决问题。在第二个调试语句之后,它仍然没有呈现。@ewok那么当您设置
    display\u errors
    打开时,会出现一些其他问题。可能是
    dbname
    上的数据库权限不正确。如何检查php.ini文件中是否启用了mysql扩展名?根据wamp托盘图标,mysq我被选中了,我被选中了