PHP strotime返回空值

PHP strotime返回空值,php,strtotime,Php,Strtotime,我建立了我的网站,用以下格式将日期写入数据库列: 2014/04/01 现在我意识到,当我想按日期排序或操纵日期时,这是没有帮助的,所以我决定将所有日期更改为时间戳 我应用了以下修复程序: $sql = mysql_query("SELECT * FROM TABLE")or(die(mysql_Error())); while($info = mysql_fetch_array($sql)){ $newdate = strtotime($info['date']);

我建立了我的网站,用以下格式将日期写入数据库列: 2014/04/01

现在我意识到,当我想按日期排序或操纵日期时,这是没有帮助的,所以我决定将所有日期更改为时间戳

我应用了以下修复程序:

    $sql = mysql_query("SELECT * FROM TABLE")or(die(mysql_Error()));
while($info = mysql_fetch_array($sql)){
        $newdate = strtotime($info['date']);
        mysql_query("UPDATE TABLE SET date = '$newdate' WHERE id = $info[id]")or(die(mysql_error()));
}

问题是现在所有的日期列都是空的,我做错了什么?

这行看起来有语法错误:

mysql_query("UPDATE TABLE SET date = '$newdate' WHERE id = $info[id]")
    or(die(mysql_error()));
尝试将其更改为:

mysql_query("UPDATE TABLE SET date = '$newdate' WHERE id = {$info['id']}")
    or (die(mysql_error()));
原因是,在将数组索引插入字符串时,必须用
{}
将其包围,否则PHP将尝试将
$info
转换为字符串,并在其后面插入
[id]
,我猜这是您无意的


我还建议检查
strotime
的返回值。如果它不能解析日期,它将返回
false
,我猜您不希望将其插入到数据库中。

您实际在哪里更改列数据类型?什么是
$info['date']
设置为何时失败?在UPDATE语句中,我将用新的时间戳替换旧的日期。列
date
的数据类型是什么?为什么不使用
date
字段日期?考虑使用
pdo
mysqli.*
函数代替不推荐的mysql\u查询。然后你应该使用prepare语句来防止sql注入,除了其他一些很好的改进(例如速度-prepare once,update many)@Rufinus我不认为prepare语句可以提高这里的安全性。他似乎在运行一个一次性脚本,用PHP“修复”日期列中的数据。不过,我同意,正确地使用安非他明是一个好习惯。这就是我提到速度增益的原因。如果他只准备一次语句,并且只使用不同的值执行。@Rufinus重用准备好的语句不会比直接查询更快;不管怎样,都会有相同数量的SQL通过网络发送出去。@amphetamachine不是真的,您可以使用mysql服务器反复解析相同的查询。看见