Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php将日期写入SQL,日期已更改_Php_Sql Server 2008 - Fatal编程技术网

从php将日期写入SQL,日期已更改

从php将日期写入SQL,日期已更改,php,sql-server-2008,Php,Sql Server 2008,我有PHP5.4中的代码,可以在SQLServer2008R2中创建记录。PHP代码创建一个日期: $date = date("Y-m-d"); 哪些是: '2015-06-23' 该日期用于对SQL server的查询: $insert = 'INSERT INTO AdAttend (AdEnrollSchedID, AdEnrollID, Date, StartTime, Attend, Absent, unitType, Status, Comment, Excused, ModFl

我有PHP5.4中的代码,可以在SQLServer2008R2中创建记录。PHP代码创建一个日期:

$date = date("Y-m-d");
哪些是:

'2015-06-23'
该日期用于对SQL server的查询:

$insert = 'INSERT INTO AdAttend (AdEnrollSchedID, AdEnrollID, Date, StartTime, Attend, Absent, unitType, Status, Comment, Excused, ModFlag, UserID, DateAdded, DateLstMod, AdClassAttendID, Type)
        VALUES ('.$AdEnrollSchedID.','.$AdEnrollID.','.$date.',\'1899-12-30 07:00:00.000\','.$present.','.$absent.',\'M\',\'A\',\''.$comment.'\',0,\'A\','.$instructorID.
        ','.$date.','.$date.','.$AdClassAttendID.',\'A\')';
这个问题似乎很有效。记录按其应有的方式插入。但是,当我检查表中的记录时,日期是:

 '1905-06-23 00:00:00.000'

所以问题是,为什么将2015年改为1905年?

在单引号中插入转义引号或使用双引号

$insert = 'INSERT INTO AdAttend (AdEnrollSchedID, AdEnrollID, Date, StartTime, Attend, Absent, unitType, Status, Comment, Excused, ModFlag, UserID, DateAdded, DateLstMod, AdClassAttendID, Type)
        VALUES ('.$AdEnrollSchedID.','.$AdEnrollID.',\''.$date.'\',\'1899-12-30 07:00:00.000\','.$present.','.$absent.',\'M\',\'A\',\''.$comment.'\',0,\'A\','.$instructorID.
        ','.$date.','.$date.','.$AdClassAttendID.',\'A\')';


确保清理查询参数。用户输入只使用一个变量,而不是日期。变量是在使用前经过消毒的数字。即使如此,也不能帮助解决问题…
$date
是一个字符串,应该被引用-
,\'.$date.'\',…
。例如,查看您的
StartTime
,它也被引用。这并不是为了帮助解决问题,而是为了指出一个潜在的安全漏洞,每个人都可能会发现它有帮助。也就是说,我使用了非常类似的代码,而且效果很好。也许更详细的代码片段会有所帮助。请尝试包含“创建表”语法以及日期格式和insert之间的操作。@Sean-doh。。。你明白了。我应该抓住那个。。。。也许是时候休息一下了。您的第一个示例缺少连接所需的未替换引号。-<代码>\'.$date.'\'选项2,带双引号似乎不起作用。。选项1是的,但我要赞扬肖恩,因为他是第一个得到的。
$insert = 'INSERT INTO AdAttend (AdEnrollSchedID, AdEnrollID, Date, StartTime, Attend, Absent, unitType, Status, Comment, Excused, ModFlag, UserID, DateAdded, DateLstMod, AdClassAttendID, Type)
        VALUES ('.$AdEnrollSchedID.','.$AdEnrollID.',"'.$date.'",\'1899-12-30 07:00:00.000\','.$present.','.$absent.',\'M\',\'A\',\''.$comment.'\',0,\'A\','.$instructorID.
        ','.$date.','.$date.','.$AdClassAttendID.',\'A\')';