HTML 表单和 PHP 脚本 - 不向 MySQL 数据库表提交数据

Posted

技术标签:

【中文标题】HTML 表单和 PHP 脚本 - 不向 MySQL 数据库表提交数据【英文标题】:HTML Form & PHP Script - Not Submitting Data to MySQL DB Table 【发布时间】:2015-12-30 01:23:43 【问题描述】:

我有一个简单的 html 联系表单和一个 php 脚本,用于将数据提交到 mysql 数据库。

一切似乎都正常——我的浏览器显示the data was submitted——除了数据没有出现在phpMyAdmin的数据库表中。我看到的都是"MySQL returned an empty result set (i.e. zero rows)."

这是 PHP 脚本:

<?php
$link = mysqli_connect("db.example.com","dbo","*********")  or die("failed to connect to server !!"); 
mysqli_select_db($link,"db");
if(isset($_REQUEST['submit']))

$errorMessage = "";
$PropertyAddress=$_POST['PropertyAddress'];
$City=$_POST['City'];
$State=$_POST['State'];
$ZipCode=$_POST['ZipCode'];
$AskingPrice=$_POST['AskingPrice'];
$Name=$_POST['Name'];
$Phone=$_POST['Phone'];
$Email=$_POST['Email'];


// Validation will be added here

if ($errorMessage != "" ) 
echo "<p class='message'>" .$errorMessage. "</p>" ;

else

//Inserting record in table using INSERT query

$insqDbtb="INSERT INTO `db`.`House_Leads`
(`PropertyAddress`, `City`, `State`, `ZipCode, `AskingPrice`, `Name`,
`Phone`, `Email`) VALUES ('$PropertyAddress, '$City', 
'$State', '$ZipCode', '$AskingPrice', '$Name', '$Phone', '$Email')";
mysqli_query($link,$insqDbtb) or die(mysqli_error($link));


?>

这是我的 HTML 表单:

<form role="form" action="houseleads.php" method="POST" class="contact clearfix">
  <p class="text _text text-4">Property Information</p>
  <input class="_input _input-1" name="PropertyAddress" placeholder="Property Street Address" type="text">
  <div class="container container-2 clearfix">
    <input id="city" class="_input" name="City" placeholder="City" type="text">
    <input id="state" class="_input _input-3" name="State" placeholder="State" type="text">
  </div>
  <div class="container container-3 clearfix">
    <input id="zipcode" class="_input" name="ZipCode" placeholder="Zip Code" type="text" maxlength="5">
    <input id="price" class="_input _input-5" name="AskingPrice" placeholder="Your Asking Price" type="number" step="5000">
  </div>
  <p class="text _text text-5">Contact Information</p>
  <div class="container container-4 clearfix">
    <input id="name" class="firstname" name="Name" placeholder="Your Name" type="text">
    <input id="phone" class="_input _input-6" name="Phone" placeholder="Phone Number" type="tel" maxlength="10">
  </div>
  <input id="email" class="_input _input-7" name="Email" placeholder="Email Address" type="email">
  <button id="submit" class="_button" type="submit">Get an Offer</button>
</form>

任何帮助或见解将不胜感激。这是我第一次尝试使用 PHP,在为此苦苦挣扎了几个小时后 X-) 我不知所措。

编辑:连同 Chris 识别的缺少的反引号 - 我在表单按钮的 HTML 中缺少name="submit"

【问题讨论】:

请查找准备好的语句。您不想直接从 $_POST 插入。在这里会有很大帮助。 回显$insqDbtb,看看你得到了什么。 【参考方案1】:

您的 SQL 查询中缺少单引号和反引号。应该是:

$insqDbtb="INSERT INTO `db594303259`.`House_Leads`
(`PropertyAddress`, `City`, `State`, `ZipCode`, `AskingPrice`, `Name`,
`Phone`, `Email`) VALUES ('$PropertyAddress', '$City', 
'$State', '$ZipCode', '$AskingPrice', '$Name', '$Phone', '$Email')";

ZipCode 缺少反引号,$propertyAddress 缺少单引号。)

如果您更正此问题,查询可能会起作用。

编辑:在 phpMyAdmin 中试试这个。

INSERT INTO `db594303259`.`House_Leads`
(`PropertyAddress`, `City`, `State`, `ZipCode`, `AskingPrice`, `Name`,
`Phone`, `Email`) VALUES ('test1', 'test2', 
'test3', 'test4', 'test5', 'test6', 'test7', 'test8')

你有什么错误吗?

此外,您可能不需要在查询中再次选择数据库。所以你可以有:

INSERT INTO `House_Leads` ( ...

【讨论】:

感谢收看这个。我已经更新了代码,但数据库中仍然没有任何内容。我将按照@blahfunk 的建议研究准备好的陈述 你也可以发布你的数据库结构吗?它可能会失败,因为列拼写不正确,或者因为输入的数据类型错误。另外,您是否检查了所有 $_POST 变量是否已正确地从表单发送到处理程序文件? dbo594303259 是用户名,db594303259 是数据库名称 哦,我明白了。很多时候用户名和数据库名称是相同的,因此我的评论。 我看不到任何错误。尝试将我上面添加的代码直接输入到数据库中(phpMyAdmin 中的 SQL 选项卡)。

以上是关于HTML 表单和 PHP 脚本 - 不向 MySQL 数据库表提交数据的主要内容,如果未能解决你的问题,请参考以下文章

将 PHP 错误日志文件存储在脚本目录中,而不向现有脚本添加 PHP 代码

为啥 php mysqli 不向 Xampp 中的数据库插入数据

使用html表单导入csv数据...使用PHP脚本加载数据infile和MySQL

是否可以使用 HTML 表单/PHP 脚本上传文件夹

使用 HTML 表单,如何使用正确的 GET/POST 数据开始调试操作 PHP 脚本? (使用 PhpStorm 和 XAMPP)

php 脚本不回显 textarea 输入(html 表单)。为啥?