我目前有一个格式为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();
}
由于使用了implodeArray,我无法格式化startDate和endDate的值以匹配MySQL DATE格式。
答案 0 :(得分:3)
为什么不在密码时使用类似的方法?因此,您只需添加另一个函数即可将日期输入转换为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();
}
答案 1 :(得分:1)
Hmmmmm
我知道这样的查询更容易编写(一个函数会生成所有参数等)但我会强烈建议您准备语句 - 有人来支持您的代码会感谢你的。
这样你可以使用NOW(),DATE_DIFF和其他令人敬畏的......
我知道这不能解答您的问题,但我确实认为您应该花时间正确构建查询 - 帮助防止运行时错误/攻击等等。
答案 2 :(得分:0)
不确定您的问题的具体细节,但总的来说:
$mysql_formatted_date = date("Y-m-d", strtotime($mdy_formatted_date));
答案 3 :(得分:0)
我想你会想要STR_TO_DATE()
STR_TO_DATE("%m/%d/%Y")
我认为格式正确
答案 4 :(得分:0)
虽然数组和mysql列都有隐式顺序,但你怎么知道它们是相同的?
如果您提供'echo $ sql'的输出而不是所有的PHP代码,那将会更有用 - 虽然后者突出了很多混乱的编程,并非最不重要:
采用格式为m / d / y的日期的表格 - 然后我尝试插入
在日期字段的情况下,引用是可选的,具体取决于文字使用的格式 - 但是{8}根据ISO 8601 - 即大端
答案 5 :(得分:0)
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());
}