【问题标题】:Send form to SQLdatabase ( 405 not allowed)将表单发送到 SQL 数据库(不允许 405)
【发布时间】:2017-04-24 22:39:47
【问题描述】:

所以我有这个网页:

<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="css/inputstyle.css">
  <title>Database Input</title>
</head>

<body>
    <h1> Database Input Page </h1>
    <p> Here you can input to the Database </p>
    <a href="View.html">View Database.</a>

    <form submit="submit.php" method="post">
        <p>First Name: <input type="text" name="firstname" /></p>
        <p>Surname: <input type="text" name="surname" /></p>
        <p>Age: <input type="text" name="age" /></p>
        <p><input type="submit" /></p>
    </form>
</body>

还有这个 php 脚本:

<?php

$username="root";
$password="password";
$database="posts";
$firstname=$_POST['firstname'];
$surname=$_POST['surname'];
$age=$_POST['age'];
mysql_connect(serverip,$username,$password);
@mysql_select_db($database) or die( "Unable to connect to Database");
$query = "INSERT INTO input  
VALUES('$firstname','$surname','$age')";mysql_query($query);mysql_close();

?>

在我的 mySQL 数据库中,我有数据库“posts”和表input。对于输入表,我只有 3 列,依次为 firstnamesurnameage

我需要让它为学校项目工作,但是当我尝试提交表单时,我收到错误405 Not Allowed。这是我第一次使用 php 和 mySQL,所以我不确定我是否犯了任何错误。此外,我所有的网络文件都位于 /usr/share/nginx/html 中,尽管我确实有一个用于 css 的子文件夹。

【问题讨论】:

  • 输入的表结构是什么?
  • @Abhik Chakraborty 表结构是 - 名字、姓氏、年龄,如果这就是你的意思?
  • 是的,您是否还有其他一些列,例如主键和所有?请发布有关问题的整个结构。
  • 嗯也可能是一些服务器配置错误
  • 阅读这篇关于主题的文章 => checkupdown.com/status/E405.html @dat_guy 我也删除了我的答案,因为你用我的答案来改变你的变量。如果您在托管网站上,请咨询您的托管服务提供商。

标签: php html mysql nginx


【解决方案1】:

编辑:

你有:(提交

<form submit="submit.php" method="post">
      ^^^^^^

把它改成:(action)

<form action="submit.php" method="post">

来自OP's original question/code的原始答案

POST 变量区分大小写。

你有:

  • &lt;input type="text" name="firstname" /&gt;
  • 使用$firstname=$_POST['First Name'];调用

    这是错误的,有两个原因。

    1. 应该是$firstname=$_POST['firstname'];
    2. 您当前的变量包含空格。

你还有:

  • &lt;input type="text" name="surname" /&gt;
  • 使用$surname=$_POST['Surname']; 调用

应该是$surname=$_POST['surname'];

然后

  • &lt;input type="text" name="age" /&gt;
  • $age=$_POST['Age'];调用,但应该是$age=$_POST['age'];

我不确定mysql_connect(serverip,$username,$password); serverip 的这条线是未定义的。


脚注:

mysql_*函数弃用通知:

http://www.php.net/manual/en/intro.mysql.php

此扩展自 PHP 5.5.0 起已弃用,不推荐用于编写新代码,因为它将在未来被删除。相反,应使用 mysqliPDO_MySQL 扩展名。在选择 MySQL API 时,另请参阅MySQL API Overview 以获得更多帮助。

这些函数允许您访问 MySQL 数据库服务器。有关 MySQL 的更多信息,请访问 »http://www.mysql.com/

可以在 »http://dev.mysql.com/doc/ 找到 MySQL 文档。

【讨论】:

  • 谢谢,我从这些变量中删除了大写和空格;但我在提交表单时仍然收到“405 Not Allowed”错误。 (另外,它说'serverip'我实际上只有我的服务器的IP,但我将它更改为'serverip'只是为了问问题 - 与'password'相同不是我的实际密码)
  • 查看我的编辑 @dat_guy 重新加载我的答案。
  • 谢谢,我尝试将其从“提交”更改为“操作”,但我仍然遇到同样的问题(错误 405)
  • 另一件可能在这里发挥作用的事情是,您正在做 "INSERT INTO input VALUES('$firstname','$surname','$age')" 尝试使用实际列作为您的 INSERT --- 即:"INSERT INTO input (firstname,surname,age) VALUES('$firstname','$surname','$age')"@dat_guy 取决于您的列名称.另外,请联系您的虚拟机提供商。
  • 我还注意到您使用&lt;a href="View.html"&gt;View Database.&lt;/a&gt; 来“查看数据库”。 .html 文件不会使用 .html 作为扩展来处理 PHP/SQL,除非您指示 Apache 将 .html 视为 PHP。 @dat_guy 你的所有文件都设置为.php 文件吗?
猜你喜欢
  • 2018-03-18
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
相关资源
最近更新 更多