2016-12-14 129 views
0

我必须创建一个表单,将答案发送到数据库,但是当我填写表单时数据库没有更新,并且我收到了自制错误:“出错了”。任何人都可以看到任何错谢谢。不插入数据库。 PHP和mysql

形式:

<form id="contact-form" method="post" action="sentEnquiries.php" name="enquiries"> 
      <div class="row"> 
       <div class="col-md-6"> 
        <div class="form-group"> 
         <label for="name"> 
          Name</label> 
         <div class="input-group"> 
          <span class="input-group-addon"><span class="glyphicon glyphicon-user"></span> 
          </span> 
          <input type="text" class="form-control" id="name" name="name" placeholder="Enter name" required="required" /></div> 
        </div> 

        <div class="form-group"> 
         <label for="email"> 
          Email Address</label> 
         <div class="input-group"> 
          <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span> 
          </span> 
          <input type="email" class="form-control" id="email" name="email" placeholder="Enter email" required="required" /></div> 
        </div> 

        <div class="form-group"> 
         <label for="phoneNumber"> 
          Phone Number</label> 
         <div class="input-group"> 
          <span class="input-group-addon"><span class="glyphicon glyphicon-earphone"></span> 
          </span> 
          <input type="tel" class="form-control" id="phoneNumber" name="phone" placeholder="Enter phone number" required="required" /></div> 
        </div> 

        <div class="form-group"> 
         <label for="partySize"> 
          Party Size</label> 

         <input type="number" min="1" max="6" class="form-control" id="partySize" name="partySize" required="required" /> 
        </div> 




       </div> 

       <div class="col-md-6"> 
        <div class="form-group"> 
         <label for="arrivalDate"> 
          Arrival Date</label> 

         <input type="date" class="form-control" id="arrivalDate" name="arrivalDate" /> 
        </div> 

        <div class="form-group"> 
         <label for="departureDate"> 
          Departure Date</label> 

         <input type="date" class="form-control" id="departureDate" name="departureDate"/> 

        </div> 
        <div class="form-group"> 
         <label for="name"> 
          Message</label> 
         <textarea name="message" id="message" class="form-control" rows="9" cols="25" required="required" 
          placeholder="Message"></textarea> 
        </div> 
       </div> 
       <div class="col-md-12"> 
        <button type="submit" class="btn btn-skin pull-right" id="btnContactUs"> 
         Send enquiry</button> 
       </div> 
      </div> 
      </form> 

答案:

<?php 

include("conn.php"); 


$sentName = $_POST['name']; 
$sentEmail = $_POST['email']; 
$sentPhone = $_POST['phone']; 
$sentPartySize = $_POST['partySize']; 
$sentArrivalDate = $_POST['arrivalDate']; 
$sentDepartureDate = $_POST['departureDate']; 
$sentMessage = $_POST['message']; 


$insertQuery = "INSERT INTO Enquiries(enquiryID, name, email, phone, partySize, arrivalDate, departureDate, message) VALUES(NULL, '$sentName', '$sentEmail', '$sentPhone, '$sentPartySize', $sentArrivalDate, '$sentDepartureDate', '$sentMessage')"; 


?> 

再往下答案DOC:

<div class="descriptions"> 

     <?php 
     if(mysqli_query($conn, $insertQuery)) { 
      echo "<p>Thank you for your enquiry.</p>"; 
       mysqli_close($conn); 
     } else { 
      echo "<p>Something went wrong.</p>"; 
       mysqli_close($conn); 
     } 


     ?> 




     </div> 
+1

还没有找错误运行查询之前添加的条件,但是你的应用程序将不会被保存到SQL注入。使用准备好的语句使它们保存;) – Twinfriends

+0

你不能在插入值上使用'name'将其改为别的。并且该ID应该是自动增量,所以也删除这些。 – Option

+0

@选项哪个值?在帖子里面? – monkey232

回答

0

你能不能确认如下:

  1. enquiryID列,是此列是自动增量如果没有更好的,你设置id成为自动增量主键
  2. 为了调试,你可以先回响在$ _ POST [“名”]则退出;以确保您的html的发布数据正常工作。
  3. 如果不行,你应尽量选择从简单的查询数据库第一,所以你会知道数据库表的连接是正常工作
+0

1。是的,它是两个。我会怎么做呢?没有这么做,因为你可能会告诉。 – monkey232

0

这里是如何我会做到这一点。

更改你的要求,但这里是我的例子:

PDO类:

class form 
{ 
    public function sendForm($name, $email, $phone, $party, $date, $depart, $message) 
    { 
     $stmt = $this->conn->prepare("INSERT INTO `enquiries` (`name`,`email`,`phone`,`partySize`,`arrivalDate`,`departureDate`,`message`) VALUES (:fname, :email, :phone, :party, :arrive, :depart, :msg)"); 
     $stmt->bindParam(array(':fname' => $name, ':email' => $email, ':phone' => $phone, ':party' => $party, ':arrive' => $date, ':depart' => $depart, ':msg' => $message)); 
     $stmt->execute(); 
    } 
} 

然后你的表单页面中:

$form = new form(); 

if (isset($_POST['sendIt'])) 
{ 
    $form->sendForm($_POST['Fname'],$_POST['email'],$_POST['phone'],$_POST['size'],$_POST['date'],$_POST['depart'],$_POST['message']); 
} 

然后我没有在div标签基本形式,所以你“会需要稍微调整:

<form action="" method="post"> 
    <input type="text" name="Fname"> 
    <input type="email" name="email"> 
    <input type="text" name="phone"> 
    <input type="text" name="size"> 
    <input type="text" name="date"> 
    <input type="text" name="depart"> 
    <textarea name="message" id="" cols="30" rows="10"></textarea> 

    <input type="submit" name="sendIt"> 
</form> 

这是一个非常基本的一个,没有感谢消息或条件,但你可以很容易地通过做

if (!empty($var) 
{ 
// do something 
} else { 
echo "you didnt fill this in...";