Php 将日期值插入MySQL
我目前有一个表单,它的日期格式为m/d/y——我尝试将其插入表中,但表中的值为0000-00-00。我理解,由于插入日期的格式,未插入该值 问题是,我不确定如何更改格式,以便以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( '
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代码,那么它会更有用——尽管后者强调了许多混乱的编程,尤其是:
- 场序问题
- 引用非数值
- 未正确转义字段
- 未捕获/处理错误
- 没有评论
对于日期字段,根据文字使用的格式,引号是可选的,但根据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代码,那么它会更有用——尽管后者强调了许多混乱的编程,尤其是:
- 场序问题
- 引用非数值
- 未正确转义字段
- 未捕获/处理错误
- 没有评论
在日期字段的情况下,根据文字使用的格式,引号是可选的-但根据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());
}