【发布时间】:2015-11-15 13:46:54
【问题描述】:
这是 PHP 代码。
public function storeUser($name, $email, $password, $str_birthday) {
$uuid = uniqid('', true);
$hash = $this->hashSSHA($password);
$encrypted_password = $hash["encrypted_password"]; // encrypted password
$salt = $hash["salt"]; // salt
$dob = DateTime::createFromFormat('m/d/Y', $str_birthday)->format('Y-m-d');
$result = mysqli_query($this->db->connect(), "INSERT INTO users(unique_id, name, email, encrypted_password, birthday, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$dob', '$salt', NOW())");
// check for successful store
if ($result) {
// get user details
$result = mysqli_query($this->db->connect(), "SELECT * FROM users WHERE email = '$email'");
// return user details
return mysqli_fetch_array($result);
} else {
return false;
}
}
在浏览器上运行该命令后,显示以下部分未定义。
$dob = DateTime::createFromFormat('m/d/Y', $str_birthday)->format('Y-m-d');
但是我已经找到了很多使用该方法更改日期格式以将其存储到 MySQL 数据库中的建议。
【问题讨论】:
-
您确定始终提供
$str_birthday吗?请注意文档中提到Returns a new DateTime instance or FALSE on failure(因此在这些情况下您不能调用->format('Y-m-d'))。 -
这里也有关于 PHP 版本的好评论,但消失了。请注意,
DateTime::createFromFormat适用于 PHP >= 5.3.0。 -
@jso
DateTime::createFromFormat可用,但接下来是;->format()函数似乎未定义。 -
@jso 例如,当我开始在 Eclipse 中输入
DateTime::createFromFormat时,建议使用它,但->format()不可用,说“没有默认建议”。 -
只是 Eclipse 中或运行代码时的问题?请注意,
->format()并不总是可用,因为它取决于输入:DateTime::createFromFormat('m/d/Y', '01/01/2015')将返回DateTime,但DateTime::createFromFormat('m/d/Y', '01/01/xy')将返回false,所以显然你不能使用->format()。
标签: php