Php 将日期值插入MySQL

Php 将日期值插入MySQL,php,mysql,sql,insert,Php,Mysql,Sql,Insert,我目前有一个表单,它的日期格式为m/d/y——我尝试将其插入表中,但表中的值为0000-00-00。我理解,由于插入日期的格式,未插入该值 问题是,我不确定如何更改格式,以便以MySQL将存储的格式插入 以下是将数据插入表中的函数: public function addUser($array) { $array['password'] = $this->hashPassword($array['password']); $implodeArray = '"'.implode( '

我目前有一个表单,它的日期格式为m/d/y——我尝试将其插入表中,但表中的值为0000-00-00。我理解,由于插入日期的格式,未插入该值

问题是,我不确定如何更改格式,以便以MySQL将存储的格式插入

以下是将数据插入表中的函数:

public function addUser($array) {
  $array['password'] = $this->hashPassword($array['password']);
  $implodeArray = '"'.implode( '","', $array ).'"';
  $sql = ('INSERT INTO user
              (email, password, firstName, lastName, officeID, departmentID, managerID, roleID, username, contractType, startDate, endDate, totalLeaveEntitlement, remainingLeave) 
           VALUES 
              ('.$implodeArray.')');
  echo $sql;
  die();
  mysql_query($sql,$this->_db) or die(mysql_error());
  mysql_close();
}

由于使用了IMPODEARRAY,我无法格式化startDate和endDate的值以匹配MySQL日期格式

不确定您的问题的具体内容,但一般来说:

$mysql_formatted_date = date("Y-m-d", strtotime($mdy_formatted_date));

不确定您的问题的具体内容,但总体而言:

$mysql_formatted_date = date("Y-m-d", strtotime($mdy_formatted_date));

为什么不使用与散列密码时类似的方法?因此,您只需添加另一个函数,即可将日期输入转换为mysql日期格式:

public function addUser($array) {
    $array['password'] = $this->hashPassword($array['password']);

    $array['startDate'] = $this->mysql_date_format($array['startDate']);
    $array['endDate'] = $this->mysql_date_format($array['endDate']);

    $implodeArray = '"'.implode( '","', $array ).'"';
    $sql = ('INSERT INTO user (email, password, firstName, lastName, officeID, departmentID, managerID, roleID, username, contractType, startDate, endDate, totalLeaveEntitlement, remainingLeave) VALUES ('.$implodeArray.')');
    echo $sql;
    die();
    mysql_query($sql,$this->_db) or die(mysql_error());
    mysql_close();
}

为什么不使用与散列密码时类似的方法?因此,您只需添加另一个函数,即可将日期输入转换为mysql日期格式:

public function addUser($array) {
    $array['password'] = $this->hashPassword($array['password']);

    $array['startDate'] = $this->mysql_date_format($array['startDate']);
    $array['endDate'] = $this->mysql_date_format($array['endDate']);

    $implodeArray = '"'.implode( '","', $array ).'"';
    $sql = ('INSERT INTO user (email, password, firstName, lastName, officeID, departmentID, managerID, roleID, username, contractType, startDate, endDate, totalLeaveEntitlement, remainingLeave) VALUES ('.$implodeArray.')');
    echo $sql;
    die();
    mysql_query($sql,$this->_db) or die(mysql_error());
    mysql_close();
}
我想你会想要的

STR\u TO\u DATE(“%m/%d/%Y”)
我认为格式正确吗

STR\u TO\u DATE(“%m/%d/%Y”)
我认为是正确的格式

我知道编写这样的查询(一个函数生成所有参数等)看起来比较容易,但我强烈建议您准备好您的语句-有人来支持您的代码会为此感谢您

这样,您就可以使用NOW()、DATE_DIFF和其他类似的令人敬畏的功能

我知道这不能回答您的问题,但我确实觉得您应该花时间正确构造查询-帮助防止运行时错误/攻击等。

Hmmmmm

我知道编写这样的查询(一个函数生成所有参数等)看起来比较容易,但我强烈建议您准备好您的语句-有人来支持您的代码会为此感谢您

这样,您就可以使用NOW()、DATE_DIFF和其他类似的令人敬畏的功能


我知道这并不能回答您的问题,但我确实觉得您应该花点时间正确构造查询—帮助防止运行时错误/攻击等。

虽然数组和mysql列都有隐式顺序,但您如何知道它们是相同的

如果您提供了“echo$sql”的输出,而不是所有的PHP代码,那么它会更有用——尽管后者强调了许多混乱的编程,尤其是:

  • 场序问题
  • 引用非数值
  • 未正确转义字段
  • 未捕获/处理错误
  • 没有评论
格式为m/d/y的表单-然后我尝试插入它


对于日期字段,根据文字使用的格式,引号是可选的,但根据ISO 8601,即big-endian,虽然数组和mysql列都有隐式顺序,但您如何知道它们是相同的

public function addUser($array) {
  list($d,$m,$y) = explode("/",$array['startDate']);
  $array['startDate'] = "$y-$m-$d";
  list($d,$m,$y) = explode("/",$array['endDate']);
  $array['endDate'] = "$y-$m-$d";

  $array['password'] = $this->hashPassword($array['password']);

  foreach($array as $key => $value){
    $array[$key] = mysql_real_escape_string($value);
  }
  $implodeArray = implode("','", $array);
  $sql = "INSERT INTO user VALUES (NULL,'$implodeArray')";
  echo $sql;
  die();
  mysql_query($sql,$this->_db) or trigger_error(mysql_error());
}
如果您提供了“echo$sql”的输出,而不是所有的PHP代码,那么它会更有用——尽管后者强调了许多混乱的编程,尤其是:

  • 场序问题
  • 引用非数值
  • 未正确转义字段
  • 未捕获/处理错误
  • 没有评论
格式为m/d/y的表单-然后我尝试插入它


在日期字段的情况下,根据文字使用的格式,引号是可选的-但根据ISO 8601-即big-endian

,最好看到CREATE TABLE语句以了解哪个数据类型具有日期字段
,因为使用了IMPLODEARRY,我无法格式化startDate和endDate
-为什么?为什么不能编辑$array值?如果能看到CREATE TABLE语句来了解哪个数据类型有日期字段
,那就太好了。由于使用了IMPODEARRAY,我无法格式化startDate和endDate的值,为什么?为什么不能编辑$array值?
public function addUser($array) {
  list($d,$m,$y) = explode("/",$array['startDate']);
  $array['startDate'] = "$y-$m-$d";
  list($d,$m,$y) = explode("/",$array['endDate']);
  $array['endDate'] = "$y-$m-$d";

  $array['password'] = $this->hashPassword($array['password']);

  foreach($array as $key => $value){
    $array[$key] = mysql_real_escape_string($value);
  }
  $implodeArray = implode("','", $array);
  $sql = "INSERT INTO user VALUES (NULL,'$implodeArray')";
  echo $sql;
  die();
  mysql_query($sql,$this->_db) or trigger_error(mysql_error());
}