我正在尝试从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;
答案 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',因为这是必须存储的受限输入。