研究了一段时间后,我很难使用隐藏的表单字段和PHP MS SQL查询来添加提交数据时上传到数据库的日期。类似于MySQL NOW()函数。我试过了,但没用。然后我还尝试了PHP的日期函数。
<input type="hidden" name="DateUploaded" value="<?php date("d","m","y") ?>">
我的上传看起来像这样:
<?php
$Title=$_POST['Title'];
$Synopsis=$_POST['Synopsis'];
$Article=$_POST['Article'];
$DateUploaded=$_POST['DateUploaded'];
$Deleted=$_POST['Deleted'];
mssql_connect("*************", "*********", "*********") or die;
mssql_select_db("DBName") or die;
mssql_query("INSERT INTO DBTable (Title, Synopsis, Article, DateUploaded, Deleted) VALUES ('$Title','$Synopsis','$Article','$DateUploaded','$Deleted')");
Print "Your information has been successfully added to the database.";
?>
这只是一个简单的测试博客数据库,然而当我尝试这种技术时,我会得到这个错误:
Warning: mssql_query() [function.mssql-query]: message: Conversion failed when converting character string to smalldatetime data type. (severity 16) in (File Path) on line 9
我理解这是因为我试图将一个字符串放入设置为smalldatetime的DB列中。我只是想知道是否有一种方法可以避免我必须更改数据库中的数据类型?
如有任何帮助,我们将不胜感激。
不用隐藏字段,只需使用php的date()即可:
$DateUploaded=date("Y-m-d H:i:s");
请确保您提交的数据库具有日期类型。
您只需在查询到数据库之前生成时间戳值并写入值,表单中没有任何隐藏字段。您将节省安全漏洞,这将是更好的风格。
我的例子:
$dateUploaded = time();
有关详细信息,请参阅time()函数。我建议你调查比隐藏领域更好的解决方案。