php代码没有运行,并且没有收到有关sql语句的错误消息

时间:2015-03-31 13:32:20

标签: php

我使用以下表格

<section id="formSection">
  <form id="dataForm" action="addUser.php" method="post">
  <div>
    <h2>Add Product:</h2>
    <lable>First Name:</lable>
    <input class="inputForm" id="inputFirstName" type="text" name="firstname">
  </div>
  <div>
    <lable>Last Name:</lable>
    <input class="inputForm" id="inputLastName"  type="text" name="lastname">
  </div>
  <div>
    <lable>Address:  </lable>
    <input class="inputForm" id="inputAdress" type="text" name="address">
  </div>
  <div>
    <lable>Post Code:</lable>
    <input class="inputForm" id="inputPostcode" type="text" name="postcode">
  </div>
  <div>
    <lable>Delievery Type:</lable>
    <input class="inputForm" id="inputDelievery" type="text" name="delievery">
  </div>
  <input type="submit">
  </form>
</section>

以及以下php代码,用于将表单中的条目添加到数据库中。

 $FirstName = $_POST[firstname];
     $LastName = $_POST[lastname];
     $address = $_POST[address];
     $postcode = $_POST[postcode];
     $delivery = $_POST[delievery];

     $sql = "INSERT INTO USERS (FIRSTNAME, SECONDNAME, ADDRESS, POSTCODE, DELIVERY_TYPE) 
             VALUES ('$FirstName', '$LastName', '$address', '$postcode', '$delivery')";
     $conn->exec($sql);

然而它无法正常工作,并且在过去2小时内盯着屏幕试图修复它。

1 个答案:

答案 0 :(得分:1)

所有的POST数组都缺少引号:

$FirstName = $_POST[firstname];

应为

$FirstName = $_POST['firstname'];

并为其他人做同样的事。

另外,由于您似乎正在使用PDO,请使用预准备语句。

您可以SQL injection开放。

错误报告会发现解析错误。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。


我还建议您使用表单元素的条件empty()来检查是否有空字段。

否则,您可能会收到MySQL的通知,具体取决于您的表的设置方式。

即:

if(!empty($_POST['firstname'])){
   $FirstName = $_POST['firstname'];
}

为了所有人:

if(
    !empty($_POST['firstname']) && 
    !empty($_POST['lastname'])  && 
    !empty($_POST['address'])   && 
    !empty($_POST['postcode'])  && 
    !empty($_POST['delievery']) 
)

{

    $FirstName =  $_POST['firstname'];
    $LastName  =  $_POST['lastname'];
    $address   =  $_POST['address'];
    $postcode  =  $_POST['postcode'];
    $delivery  =  $_POST['delievery'];

}