php表单未将日期发送到数据库SQL

Posted

技术标签:

【中文标题】php表单未将日期发送到数据库SQL【英文标题】:php form not sending date through to database SQL 【发布时间】:2016-02-11 12:16:34 【问题描述】:

我已经使用 htmlphp 设置了一个表单。我将从表单提交的所有信息发送到 SQL 数据库。当我提交表单时,我收到以下错误代码:

ERROR: Could not execute INSERT INTO `timesheets` (`Name`, `weekending`, `monin`, `monout`, `tuein`, `tueout`, `wedin`, `wedout`, `thursin`, `thursout`, `friin`, `friout`, `satin`, `satout`, `sunin`, `sunout`) VALUES ('Nathan Langer','07:30','16:00','18:00','19:00','06:30','15:00','03:00','16:00','05:00','16:00','00:00','00:00','00:00','00:00'). Column count doesn't match value count at row 1

如您所见,日期未通过(应该在 Nathan Langer 和 07:30 之间。

我的提交代码如下:

<?php
/* Attempt mysql server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "username", "pass", "dbname");

// Check connection
if($link === false)
die("ERROR: Could not connect. " . mysqli_connect_error());


// Escape user inputs for security
$Name = mysqli_real_escape_string($link, $_POST['Name']);
$insertdate = date('Y-m-d', strtotime($_POST['weekending']));
$monin = mysqli_real_escape_string($link, $_POST['monin']);
$monout = mysqli_real_escape_string($link, $_POST['monout']);
$tuein = mysqli_real_escape_string($link, $_POST['tuein']);
$tueout = mysqli_real_escape_string($link, $_POST['tueout']);
$wedin = mysqli_real_escape_string($link, $_POST['wedin']);
$wedout = mysqli_real_escape_string($link, $_POST['wedout']);
$thursin = mysqli_real_escape_string($link, $_POST['thursin']);
$thursout = mysqli_real_escape_string($link, $_POST['thursout']);
$friin = mysqli_real_escape_string($link, $_POST['friin']);
$friout = mysqli_real_escape_string($link, $_POST['friout']);
$satin = mysqli_real_escape_string($link, $_POST['satin']);
$satout = mysqli_real_escape_string($link, $_POST['satout']);
$sunin = mysqli_real_escape_string($link, $_POST['sunin']); 
$sunout = mysqli_real_escape_string($link, $_POST['sunout']);


// attempt insert query execution
$sql = "INSERT INTO `timesheets` (`Name`, `weekending`, `monin`, `monout`,      `tuein`, `tueout`, `wedin`, `wedout`, `thursin`, `thursout`, `friin`, `friout`, `satin`, `satout`, `sunin`, `sunout`) VALUES ('$Name','$monin','$monout','$tuein','$tueout','$wedin','$wedout','$thursin','$thursout','$friin','$friout','$satin','$satout','$sunin','$sunout')";
if(mysqli_query($link, $sql))
header('location:timesheets.php');
 else
echo "ERROR: Could not execute $sql. " . mysqli_error($link);


// close connection
mysqli_close($link);
?>

这是因为我在提交表单中的日期有问题吗?表格中的日期字段如下:

<div class="col-md-6 col-sm-6" >
<div class="input-group">
<span class="input-group-addon">
<i class="fa fa-calendar"></i>
</span>
<input type="date" id="weekending" class="form-control " name="weekending" placeholder="Week Ending">
</div>                                              
</div>  

请有人帮我找出问题出在哪里以及为什么它不会发布到数据库中?

【问题讨论】:

查询中的值和数据库表中的值不匹配...您在查询中缺少任何值 @V5Nathan 您在插入值中错过了值$insertdate,这就是为什么没有插入日期...。再次检查并验证您的查询 【参考方案1】:

改变

$sql = "INSERT INTO `timesheets` (`Name`, `weekending`, `monin`, `monout`,`tuein`, `tueout`, `wedin`, `wedout`, `thursin`, `thursout`, `friin`, `friout`, `satin`, `satout`, `sunin`, `sunout`) VALUES ('$Name','$monin','$monout','$tuein','$tueout','$wedin','$wedout','$thursin','$thursout','$friin','$friout','$satin','$satout','$sunin','$sunout')";

$sql = "INSERT INTO `timesheets` (`Name`, `weekending`, `monin`, `monout`,`tuein`, `tueout`, `wedin`, `wedout`, `thursin`, `thursout`, `friin`, `friout`, `satin`, `satout`, `sunin`, `sunout`) VALUES ('$Name','$insertdate','$monin','$monout','$tuein','$tueout','$wedin','$wedout','$thursin','$thursout','$friin','$friout','$satin','$satout','$sunin','$sunout')";

【讨论】:

【参考方案2】:

您传递的列多于没有。价值观,

因此您需要通过添加一个列名或删除一个值来更正查询。

INSERT INTO `timesheets` (`Name`, `weekending`, `monin`, `monout`, `tuein`, 
`tueout`, `wedin`, `wedout`, `thursin`, `thursout`, `friin`, `friout`, 
`satin`, `satout`, `sunin`, `sunout`) VALUES ('Nathan 
Langer','07:30','16:00','18:00','19:00','06:30','15:00','03:00','16:00','05:00',
'16:00','00:00','00:00','00:00','00:00', '00:00')

上面的代码可以正常工作,因为我在其中又添加了一个值。

【讨论】:

以上是关于php表单未将日期发送到数据库SQL的主要内容,如果未能解决你的问题,请参考以下文章

将日期从 HTML 表单传递到 servlet 到 SQL 数据库

sql未将对象引用设置到对象的实例怎么解决

sql 数据库过期了,想升级下,提示未将对象引用设置到对象的实例。

Excel 和 tableau 未将日期维度检测为日期时间列

在 SQL 中使用 PHP 为 DATETIME 转换日期

PHP脚本未将表单数据插入数据库