无法将正确的值插入表中

时间:2014-05-29 18:25:18

标签: php mysql

我有一个名为 user_job_apply的数据库(id,job_id,postby_id,applier_id,flag,flag_wall,time_apply)

我的数据库中的“time_apply”类型设置为:datetime

我的问题是,以下代码片段在我的数据库中插入了所有内容,但它没有插入 $ timeString 的值。当我查看我的数据库时,它显示0000-00-0000B 00:00。知道这里有什么问题吗?

我已经通过回显$ timeString进行测试,它显示日期和时间成功,但我无法将其传递到我的数据库中。知道如何解决这个问题吗?

<?php

// the next two values comes from a form 

$the_job_code =  mysql_real_escape_string($_POST['jobid']);
$the_postedby =  mysql_real_escape_string($_POST['postedby']);

// use it to get current time from user's computer

$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> ';

mysql_query("INSERT INTO `user_job_apply` VALUES ('', '$the_job_code', '$the_postedby ', '$session_user_id', '1', '1', '$timeString') "); 

?>

3 个答案:

答案 0 :(得分:0)

也许您需要使用MySQL日期格式,例如&#39; YYYY-MM-DD&#39;?

答案 1 :(得分:0)

可能是因为你的Mysql本地化设置和dateformat,试试stepozer所说的&#39; YYYY-MM-DD&#39;

today = yyyy+"/" +mm+"/"+dd+ " " +today.getHours() + ":" + today.getMinutes()+":" +    today.getSeconds();

或者您可以使用函数NOW()

直接在sql上插入当前日期和时间
mysql_query("INSERT INTO `user_job_apply` VALUES ('', '$the_job_code', '$the_postedby ', '$session_user_id', '1', '1', NOW()) "); 

答案 2 :(得分:0)

&#34;今天&#34;在Javascript块底部定义的变量没有以与MySQL兼容的格式定义。

应该这样定义:

today = yyyy+"-"+mm+"/"+dd+" "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();

像这样,它将以MySQL所需的格式输出,以保存在&#34; datetime&#34;字段。

修改

上述解决方案仅解决了部分问题。

这里的主要问题是在提交表单后,此代码在服务器端运行。

你应该将javascript块移动到表单所在的html文件中(在表单之后)并写下&#34;今天&#34;变量为隐藏的表单输入,称为&#34; timeString&#34;。

提交后,您应通过帖子收到此变量:

$timeString =  mysql_real_escape_string($_POST['timeString']);

编辑2:

首先,您需要在表单中创建隐藏的表单输入:

<input type="hidden" name="timeString" id="timeStringInput">

您需要在表单()结束后立即将以下块复制到您的html文件中:

<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 = yyyy+"/"+mm+"/"+dd+" "+today.getHours()+":"+today.getMinutes()+":"+   today.getSeconds();
document.getElementById('timeStringInput').value = today;
</script> 

在PHP文件中,将$ timeString赋值(完整块)替换为:

$timeString =  mysql_real_escape_string($_POST['timeString']);