Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么php分割日期而不是将其保存为字符串?_Php_Mysql - Fatal编程技术网

为什么php分割日期而不是将其保存为字符串?

为什么php分割日期而不是将其保存为字符串?,php,mysql,Php,Mysql,我有一个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/m

我有一个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实际上会对它执行数学除法运算,而不是插入日期!因此,它不是保存2012年3月14日,而是将14除以3,再除以2012,并在数据库中存储0.0023


当然,有一种方法可以使用内置函数阻止这种情况的发生,而不必删除字符串中的斜杠,然后在插入前将其放回?

执行插入时,请将值放在单引号中:。。。上次更新=“$date”,否则mysql将进行计算


注意:要存储日期,请使用。

,这是因为它变成了一个表达式14/03/2012

使用引号转义这些值

$query = "INSERT INTO anothertable (data) VALUES('$olddate');";

只需用引号将其包装,并使其成为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)");

通常,除了将值作为字符串引用外: 为什么不使用将以YYYY-MM-DD格式存储日期的日期格式类型,因为它是为日期创建的类型!:


如果问题在于INSERT查询,为什么要向我们显示SELECT查询?当您只需要使用最后一个更新列时,为什么要获取*?为什么不使用INSERT…SELECT进行两次查询?源字段和目标字段的数据类型是什么?数据类型都是varchar,您对INSERT查询的看法是正确的,我忘记了在变量周围添加单引号,正如Karoly在下面建议的那样。现在可以了,谢谢。Gordon,我使用了两个查询,因为insert查询不仅从这个表中插入变量,而且还从其他很多变量中插入变量,所以这样更简洁。如果他们回答了你的问题,你应该将其标记为已回答。哇,真是个错误。我把一堆变量保存到另一个表中,忘了给这个表加引号。现在工作。谢谢事实上,我举了一个更新的例子,但我看你明白了重点;