我有一个MySQL数据库表,其中有一个VARCHAR字段,以dd / mm / yyyy格式存储日期。
我有一种情况需要将该日期提取到变量,然后将其保存在不同的表中(结构与第一个不同)。
所以我这样做:
$result=mysql_query("select * from shares") or die(mysql_error());
$row=mysql_fetch_array($result);
$date_old=$row['last_update']; //date in dd/mm/yyyy format
然后,当我尝试将$date_old
插入到另一个表中时,PHP实际上对它执行数学除法操作,而不是插入日期!因此,它不是保存14/03/2012,而是将14除以3然后到2012,并将0.0023存储在数据库中。
当然有一种方法可以使用内置函数来阻止这种情况发生(不删除字符串中的斜线然后在插入之前将它们放回去)?
答案 0 :(得分:4)
执行insert时,将值放在单引号中:" ... last_update = '$date' ... "
,否则mysql将进行计算。
注意:对于存储日期,请使用date type。
答案 1 :(得分:0)
这是因为,它变成了表达式14/03/2012
使用引号转义值。
$query = "INSERT INTO anothertable (data) VALUES('$olddate');";
答案 2 :(得分:0)
只需用引号括起来并制作mysql格式即
$date_new=explode("/", $date_old); //date in dd/mm/yyyy
$my_date=$date_new[2]."/".$date_new[1]."/".$date_new[0];
mysql_query("INSERT INTO myTable (FirstName, last_update, Age)VALUES ('Peter', '".$my_date."',35)");
答案 3 :(得分:0)
一般情况下(除了引用值,因为它是一个字符串): 为什么不使用以YYYY-MM-DD格式存储日期的DATE格式类型(因为它是为日期制作的类型!):