当前位置: 首页 > 知识库问答 >
问题:

从pc机获取当前时间并保存到数据库中

施轶
2023-03-14

我在mysql中有一个名为apply(id,user,time_apply)的数据库。我已将time_apply的结构设置为“datetime”

我有一个php脚本,它试图从用户的pc中获取当前的日期和时间,并将其存储在我的数据库中。用户的pc可以在世界任何地方。

<?php

$timeString='
<script language="javascript">
var today = new Date();
document.write(today);
</script> ';

//id is my database primary key, so I don't insert anything inside

mysql_query("INSERT INTO `apply` VALUES ('', '$session_user_id', '$timeString') "); 


?>

问题是在执行mysql_query之后,我无法在数据库中插入当前用户的日期和时间。我得到的是:0000-00-00 00:00:00

知道怎么修好它吗?

共有3个答案

梁建德
2023-03-14

您完全误解了PHP和JS是如何操作的。在上面的代码段中没有任何实际的JS代码。您有一个PHP字符串,它恰好包含一些看起来像JavaScript的文本。

但是由于PHP完全不知道JS是什么,更别提执行它了,您实际上是将JS代码作为日期值填充到MySQL中。MySQL当然会说“这到底是什么”,并将其设置为默认的0000-00-00“提供了错误的日期”值。

请记住:PHP在服务器上执行,JS在客户机上执行。

当服务器端DB完全能够生成自己的日期时,完全没有理由让客户端生成日期供服务器端DB使用:

INSERT ... VALUES(..., now());
                       ^^^^^---literally all you need.
宋洲
2023-03-14

我不知道为什么你会想要捕捉客户的时间,但下面是你会怎么做的。

首先,您需要将javascript和php脚本分开。您可以使用php输出javascript,但不能使用编写的方式。

您可以创建一个隐藏元素,该元素在您选择的javascript事件触发时设置。我使用了submit按钮的onclick事件,您可以使用page_load或其他。然后可以从php$_POST variables集合中提取该值。

<script language="javascript">
function submit_OnClick() {
    document.getElementById("clientDate").value =  currentdate.getDate() + "/"
            + (currentdate.getMonth()+1)  + "/" 
            + currentdate.getFullYear() + " @ "  
            + currentdate.getHours() + ":"  
            + currentdate.getMinutes() + ":" 
            + currentdate.getSeconds();
     }
</script> 


<?php

$timeString=$_POST["clientDate"];
mysql_query("INSERT INTO Apply (id, user, time_apply) VALUES ('', '$session_user_id', '$timeString') "); 

?>

<form method="post">
    <input type='hidden' id='clientDate' />
    <input type="submit" value="submit" id='submitForm' OnClick="submit_OnClick();"/>
    <!-- The rest of your form goes here -->
</form>

有关javascript日期的更多选项和分析,请参阅这篇相关文章:

用JavaScript获取当前日期和时间

子车桐
2023-03-14

丑陋的编码(但这是您想要的):)

$timeString='
<script language="javascript">
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();

if(dd<10) {
    dd="0"+dd
} 

if(mm<10) {
    mm="0"+mm
} 

today = mm+"/"+dd+"/"+yyyy + " " +today.getHours() + ":" + today.getMinutes()+":" + today.getSeconds();
document.write(today);
</script> ';


echo "INSERT INTO `apply` VALUES ('test', '1', '$timeString') ";

输出

INSERT INTO `apply` VALUES ('test', '1', ' 05/29/2014 22:50:4 ')
 类似资料: