方法POST不使用datetime-local字段

时间:2017-09-24 13:37:25

标签: php datetime

我正在尝试从HTML表单中获取两个日期时间本地字段,并将它们插入到SQL数据库中,但它们并未插入。 用户标准用户结束日期日期时间 - 本地字段,我无法同时获取用户总数这是enddate - startdate之间的区别。

<form role="form" action="sendFdata.php" method="POST">
  <div class="row">
    <input type="text" name="username">
    <input type="text" name="user-role">            
  </div>
  <div class="row">
    <input type="text" name="user-pm">  
    <select name="user-project">
      <option>Text1</option>    
      <option>Text2</option>
      <option>Text3</option>                        
    </select>
  </div>
  <div class="row">
    <input type="text" name="user-agroup">
    <input type="text" name="user-task">
  </div>
  <div class="row">
   <input type="datetime-local" name="user-startdate">
   <input id="end-time" type="datetime-local" name="user-enddate">
   <input type="text" name="user-totalhours" placeholder="Total Hours">             
  </div>
  <div class="rule"></div>
  <div class="form-footer">
    <button type="submit" name="button-submit">Submit</button>
    <button type="button">Reset</button>
  </div>
</form>

PHP:

<?php
$link = mysqli_connect("localhost","admin","")  or die("failed to connect to 
server !!");
mysqli_select_db($link,"test");

$username=$_POST['username'];
$userRole=$_POST['user-role'];
$userPM=$_POST['user-pm'];
$userProject=$_POST['user-project'];
$useraGroup=$_POST['user-agroup'];
$userTask=$_POST['user-task'];
$userStartDate=$POST['user-startdate'];
$userEndDate=$POST['user-enddate'];
$userTotalHours=$POST['user-totalhours'];

$insqDbtb="INSERT INTO `test`.`persons`
(`UserName`, `Role`, `PM`, `Product`, `ActivityGroup`, `Task`, `StartDate`, 
`EndDate`, `TotalHours`) VALUES ('$username', '$userRole', '$userPM', 
'$userProject', '$useraGroup', '$userTask', '$userStartDate', '$userEndDate', 
'$userTotalHours')";
mysqli_query($link,$insqDbtb) or die(mysqli_error($link));

&GT;

3 个答案:

答案 0 :(得分:1)

您有$POST['user-startdate'],其中应为$_POST['user-startdate']

但除此之外,您应该明确使用预准备语句来进行SQL查询。 How can I prevent SQL injection in PHP?

答案 1 :(得分:0)

第一个datetime-local不是类型的正确HTML属性,您应该使用日期或时间。

在那里看到:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input

然后您的mysql语句存在安全风险,因为您没有使用预准备语句。你应该调查它。

最后,您应该在将请求发送到数据库之前对其进行调试。

答案 2 :(得分:0)

元素类型“datetime-local”的属性不会创建要读取和输入的数据。特别是如果使用Firefox或IE12(及更早版本)查看。这是一个输入,页面上的用户必须输入日期和时间。

假设您正确使用输入。数据库中的列是什么数据类型?它必须能够处理'0000-00-00 00:00:00',因为这是必须存储的受限输入。