繁体   English   中英

如何使用php将信息从html表单发布到数据库

[英]How to post information from an html form to a database using php

我想使用php从html插入信息,然后使用phpmyadmin将其添加到数据库中。 我有许多选择框和文本框,我正在使用插入查询,但无法使其正常工作。

这是我的代码

来自

 <!DOCTYPE html> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Payment</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <form method="POST" action="paymentback.php"> Card Type <br> <br> <select name="card"required> <option value="visa">Visa</option> <option value="mastercar">MasterCard</option> <option value="visadebit">Visa Debit</option> <option value="maestro">Masestro</option> </select> <br> <br> Card Number <br> <input type="text" name="cardnumber"required> <br> <br> Expiry Date <br> <br> <select name="expiry" required> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <select name="expiry"required> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> <option value="2018">2018</option> <option value="2019">2019</option> <option value="2020">2020</option> <option value="2021">2021</option> <option value="2022">2022</option> </select> <br> <br> Card Security Code <br> <input type="text" name="securitycode" required> <br> Cardholder's Name <br> <input type="text" name="name"required> <br> Address line 1 <br> <input type="text" name="Address1"required> <br> Address line 2 <br> <input type="text" name="Address2"> <br> Address line 3 <br> <input type="text" name="Address3"> <br> Town/City <br> <input type="text" name="town"required> <br> <br> <input type="submit"> </form> </body> </html> 

这是后端PHP代码

 <?php if($_POST["submit"]) { $card = $_POST['card']; $cardnumber = $_POST['cardnumber']; $expiry = $_POST['expiry'] $securitycode = $_POST['securitycode']; $name = $_POST['name']; $address = $_POST['address']; $address2 = $_POST['address2']; $address3 = $_POST['address3']; $town = $_POST['town']; ;} $query = "INSERT INTO card VALUES ('$card',$cardnumber, $expiry, $securitycode, '$name', '$address', '$address2', '$address3', '$twon' )"; /*query to insert the new values into the database*/ if (!mysqli_query($con,$query)) { die('Error: ' . mysqli_error($con)); } echo "<script type='text/javascript'>alert('1 record added')</script>"; /*Displays a messgae to tell the user thatone record has been added to the database*/ mysqli_close($con); } ?> 

这是php_error_log中的错误:

[2015年3月17日15:34:52欧洲/柏林] PHP解析错误:语法错误,/Applications/MAMP/htdocs/paymentback.php中第5行出现意外的'{'

[2015年3月17日15:35:47欧洲/柏林]不推荐使用PHP:mysql_connect():不推荐使用mysql扩展,以后将其删除:在/ Applications / MAMP / htdocs / myconnect中使用mysqli或PDO代替。第7行的php

[17-Mar-2015 15:39:56欧洲/柏林] PHP解析错误:语法错误,/Applications/MAMP/htdocs/paymentback.php中第6行出现意外的'$ card'(T_VARIABLE)

[2015年3月17日19:38:42欧洲/柏林] PHP解析错误:语法错误,/Applications/MAMP/htdocs/paymentback.php中第38行的文件意外结束

检查您的HTML表单,您需要为“提交”按钮添加属性name

<input type="submit" name="submit">

提交按钮后...您需要为$_POST['submit']使用isset()empty()函数,如下所示:

if(isset($_POST["submit"]))
{
    $card = $_POST['card'];
    $cardnumber = $_POST['cardnumber'];
    $expiry = $_POST['expiry'];
    $securitycode = $_POST['securitycode'];
    $name = $_POST['name'];
    $address = $_POST['Address1'];
    $address2 = $_POST['Address2'];
    $address3 = $_POST['Address3'];
    $town = $_POST['town'];

    // The rest of your code including SQL Statements

}

检查您的属性名称以您的形式: AddressAddress2Address2 Address3具有大写Address3 A。 别忘了在每个$ _POST归因中也包括分号...

但是请确保将整个脚本代码包含在此IF语句中,因为只有在设置了 $_POST下,它们才需要执行。

注意如果声明中有多余的中号,则请同样删除

我也注意到您错过了SQL语句中的一些单引号。 但是首先,我想警告您:

希望对您有帮助。

您不会检测到表单已提交。 您需要在“提交”按钮中添加名称:

更改

<input type="submit">

<input type="submit" name="submit">

而且因为提交在这里没有价值,所以更改

if($_POST["submit"])

if(isset($_POST["submit"]))

否则,您的陈述将被评估为false。

另外,您有两个具有相同名称“ expiry”的选择元素-必须区分以获取年份和月份。

顺便说一句,使用mysqli_real_escape_string清理输入。

<input type="submit">

Submit元素需要一个名称。

<input type="submit" name="submit">

您犯了3个错误:

  1. 当你写

     if($_POST["submit"]) 

那么,您在引号中写的字意味着它是某物的名称。 在这种情况下,您要告诉PHP代码“ submit”是某物的名称,但是由于没有将此名称赋予任何东西,所以出现了问题。

通过此PHP代码,您想要定位:

<input type="submit">

但这是错误的,因为它没有任何名称。 因此,您应该写:

<input type="submit" name="Your Desired Name">

然后,您的PHP代码将变为:

if($_POST["Your given name to input Button"])
  1. 第二个错误是PHP代码中if语句的末尾还有多余的分号?

     $town = $_POST['town'];;} 
  2. 这里也缺少分号

    $expiry = $_POST['expiry']

一条建议:

在此PHP代码中

if (!mysqli_query($con,$query))
{
    die('Error: ' . mysqli_error($con));
}
echo "<script type='text/javascript'>alert('1 record added')</script>"; /*Displays a messgae to tell the user thatone record has been added to the database*/

您也应该写else语句。 由于如果将代码放入if语句中,那么将运行die查询可能不会产生太大影响,但是,使用else语句是一种良好的编程习惯。

您已经用大写字母输入了输入名称,并在$ _POST ['']中将其取小了; 更正php或html中的每个位置,然后尝试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM