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

时间:2015-03-17 13:51:10

标签: php html mysql

我想使用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>
&#13;
&#13;
&#13;

这是后端php代码

&#13;
&#13;
<?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); 
}
?>
&#13;
&#13;
&#13;

这是php_error_log中的错误:

  

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

     

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

     

[2015年3月17日15:39:56欧洲/柏林] PHP解析错误:语法错误,意外情况&#39; $ card&#39;第6行/Applications/MAMP/htdocs/paymentback.php中的(T_VARIABLE)

     

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

5 个答案:

答案 0 :(得分:2)

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

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

提交按钮后......您需要对isset()使用empty()$_POST['submit']这样的功能:

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

}

检查表单中的属性名称:AddressAddress2Address3的资本 A 。不要忘记在每个$ _POST归因中包含分号......

但请确保将整个脚本代码包含在此IF语句中,因为只有在$_POST set 时才需要执行。

注意如果声明中有一个额外的半圆形,请将其删除

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

希望它对你有所帮助。

答案 1 :(得分:0)

您没有检测到表单已提交。您需要在提交按钮中添加名称:

更改

<input type="submit">

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

因为提交在这里没有价值,所以改变

if($_POST["submit"])

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

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

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

BTW,使用mysqli_real_escape_string来清理输入。

答案 2 :(得分:0)

<input type="submit">

submit元素需要一个名字。

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

答案 3 :(得分:0)

你犯了3个错误:

  1. 写作时

    if($_POST["submit"])
    
  2. 然后,你在引文中写的这个词意味着它是某个东西的名字。在这种情况下,您告诉PHP代码&#34;提交&#34;是一个名称,但问题正在发生,因为你没有给这个名字。

    通过此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']

    3. 建议:

      在这个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语句是一个很好的编程习惯。

答案 4 :(得分:0)

你已经输入了大写字母的输入名称,而你在$ _POST ['']中输入的名称很小;纠正php或html中的每一个地方,然后尝试