mysql中的日期设置为0000-00-00,为什么?

时间:2013-10-13 17:25:50

标签: php mysql sql database http-post

我从页面获取方法发布数据,并插入到这样的表中

$b = $_POST['birth'];
//when i write echo $b; it prints 2013-10-13, i normally get data from page

$query = "INSERT INTO MEMBERS VALUES" .
    "('$firstname', '$lastname', $b, '$login', '$password')";

if (!mysql_query($query, $db_server))
 echo "INSERT failed: $query<br />" . mysql_error() . "<br /><br />";

我的桌子是

f_name VARCHAR(32) NOT NULL,
l_name VARCHAR(32) NOT NULL,
birthday DATE NOT NULL,
login_id VARCHAR(32) NOT NULL,
password VARCHAR(32) NOT NULL,
PRIMARY KEY (login_id)

但它设置了time 0000-00-00,不知道为什么。

2 个答案:

答案 0 :(得分:1)

在MySQL中,当你把每个数据都用引号(单个或双引号)时,你可能永远不会犯错。

$query = "INSERT INTO MEMBERS VALUES" .
"('$firstname', '$lastname', $b, '$login', '$password')";

$b应该是单引号。这是一个日期字符串。如果你不把它放在引号中,MySQL可能会计算出“2013减去10减去13”,得到1990年并认为:对于某个约会来说这是多么愚蠢的价值,我会用“0000-00-00”来指示下一个最好的猜测,因为我不能使用NULL。

答案 1 :(得分:0)

正如Glavić所说,日期类型 必须 字符串形成来自php,因此,它必须在单引号'$之间给出date'和所有查询必须使用双引号,这对我来说是这样的:$consulta="INSERT INTO registro(Id,Fecha,Cliente,Producto,Conductor,Remolque,Viaja) VALUES(Null,'$Fecha','{$Cliente}','{$Producto}','{$Conductor}','{$Remolque}','{$Viaja}')";其中$ fecha ya Date-Type。参见afeter值,'$fecha'