【问题标题】:mysql_query command makes entire page not load?mysql_query 命令使整个页面无法加载?
【发布时间】:2023-04-08 04:25:01
【问题描述】:

我已经在 AWS 上使用 Apache、PHP、MYSQL 设置了一个 EC2 网络服务器,到目前为止,除了这个之外,所有代码都可以在其中运行(PHP 和 HTML5)。我是 PHP 和 mySQL 的新手,所以答案可能很简单。

<?php

mysql_connect('localhost', 'root', '') or die("Couldn't Connect") ;

echo 'Connected!';

        mysql_select_db('testdatabase') or die("Couldn't find database");

echo "Connected!";
?>

<!DOCTYPE html>
<html lang='pt'>
<head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>

<form method="post" action="">

Nome: <input type="text" name="nome"/><br>
Telefone <input type="text" name="telefone" /><br>
<input type="submit" value="Enviar" /><br>

</form>


<?php

        $nome =  $_POST['nome'];
        $telefone =  $_POST['telefone'];

        if(empty($nome) || empty($telefone)) {
                echo "Preencha tudo!";
        }       else {
                $sql = "INSERT INTO dados(nome,telefone) VALUES ('$nome','$telefone')";
                $result = mysql_query($sql);
                        if($result == false) {
                        die("Error".mysql_error());
                        }


                }


?>


</body>
</html>

您可能已经猜到了,这是我观看的教程中的示例代码。有趣的是,我没有任何错误。

该页面根本不显示任何内容,并且一直在加载。经过一番挣扎,我发现如果我简单地删除了

$sql = "插入到 dados(nome,telefone) 值 ('$nome','$telefone')";

行,页面会显示form和echo命令,但是显然php不能正常工作。

我在mysql中使用的数据库是:

Database changed
mysql> show tables;
+-------------------------+
| Tables_in_testdatabase  |
+-------------------------+
| dados                   |
+-------------------------+
1 row in set (0.00 sec)
mysql> select * from dados;
+----+-------+------------+
| id | nome  | telefone   |
+----+-------+------------+
|  1 | Peter | 2147483647 |
+----+-------+------------+
1 row in set (0.01 sec)

我不知道它可能是什么。我已经尝试编写具有相同目的的全新代码并得到相同的结果:加载空白页面。

不知道有没有关联,但我在代码中使用的语言是葡萄牙语。

提前致谢。

【问题讨论】:

  • 在 else 条件之后你有一个额外的 }

标签: php mysql apache amazon-web-services amazon-ec2


【解决方案1】:

我刚刚在新安装的 EC2 实例上测试了您的代码,它按预期工作。

mysql> create table dados(nome varchar(50), telefone varchar(50));
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| dados          |
+----------------+
1 row in set (0.00 sec)

mysql> select * from dados;
+------+----------+
| nome | telefone |
+------+----------+
| test | 111      |
+------+----------+
1 row in set (0.00 sec)

mysql>

如果您在连接到您的页面时收到空白页面,这可能与 EC2 安全组配置有关。

安全组允许您定义哪些类型的网络流量被授权流入或流出您的实例。默认情况下拒绝传入流量。

如果您部署 Web 服务器,则必须明确授权流量到端口 TCP 80。

您可以在此处了解有关 EC2 安全组的更多信息:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

【讨论】:

  • 我检查了安全组,一切似乎都正常。我在image 中设置了 HTTP、HTTPS 和 SSH 的授权。在我看来和你的差不多。
  • 好的,检查好。另外两项检查: 1/ 我将连接到 yoru EC2 实例并检查 /var/log/httpd 中的 Apache 日志。它们应该是 access.log 和 error.log 文件。里面有错误信息吗? 2/你可以从EC2实例连接到你的页面吗?您可以使用命令'curl your_public_ip_address/you_path_to_your_page.php' 进行测试
  • 感谢您的宝贵时间。 access.log 中没有任何内容,error.log 中的 small error message 似乎与问题没有任何关系。至于 curl 命令,我没有收到任何信息或错误,所以我假设它有效?
  • 太奇怪了。现在页面不再空白,但似乎仍然永远加载。我不记得有什么重要的改变。代码按预期工作,这才是真正重要的。如果您仍然可以帮助加载,我将非常感激。如果有任何帮助,我现在使用的 DNS 是 ec2-54-94-211-146.sa-east-1.compute.amazonaws.com/teste.php
  • 您的 URL 在我的浏览器(Mac OSX 上的 Chrome)上加载正常 - 我还尝试了 Safari 和 Firefox ...它们都运行正常。没问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多