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

标签 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 />";

我的 table 是

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)

但它设置时间为 0000-00-00,不知道为什么。

最佳答案

在 MySQL 中,将每个数据放在引号(单引号或双引号)中时,您可能永远不会出错。

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

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

关于php - mysql 中的日期设置为 0000-00-00,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19348086/

相关文章:

php - 在 php7 中发布 ajax 数据的问题

php - MySQL 数据库的默认字段值

php - 在 CodeIgniter 中启用 CSRF 为 TRUE

MySQL 列名

php - 从表中获取相同字段的重复数据并比较同一表的其他字段

java - 错误 java.lang.ClassNotFoundException : com. mysql.jdbc.Driver 即使我已经安装了 mysql 连接器

php - SQL从Magento获取订单商品?

mysql - 使用索引语义确定 MySql 索引列中的字段是否为数字

php - 将 sql 表内容从一个表复制到另一个表 - 有条件

sql - oracle 联合计算 : what happens if there is a column name mismatch