当它属于日期时,使用php和mysql的日期和时间函数。
首先,使用
DATE
键入用于在数据库中存储日期的列。一个简短的例子,如何声明
日期
柱此示例包含
UNIQUE
日期限制
日期
列,因此值只能在此列中存储一次。
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(50) NOT NULL,
start_date DATE NOT NULL UNIQUE,
);
请记住,这是一个示例表。现在,你可以在这个基础上做所有你要求的事情
日期
柱
现在,您必须在PHP端处理日期格式。我猜日历应用程序发布的日期格式如下所示
d/m/Y
.这种格式是可以接受的,但无论是在数据库中还是在php代码中,都不常用于处理日期。主要是格式
Y-m-d
被使用了。这种格式适合数据库的需要。
以下示例采用以下格式的日历日期的post参数:
d\m\Y
并创建一个php
DateTime
别提了。
$data = $_POST['date']; // your date in d/m/Y format like 20/05/2021
$date = DateTime::createFromFormat('d/m/Y');
if ($date === false) {
throw new Exception('The given date is not in the expected format d/mY.');
}
// create the desired format for the database
$value = $date->format('Y-m-d');
// check for this date in your database
$sql = "SELECT id FROM example WHERE start_date = :start_date";
$statement = $pdo->prepare($sql);
$statement->bindValue(':start_date', $value);
$statement->execute();
// fetch a possible result
$row = $statement->fetch(PDO::FETCH_ASSOC);
// ongoing further processing
var_dump($row);
上面的例子使用
PDO
用于从mysql数据库中提取数据。无论使用什么数据库适配器,过程都是一样的。声明一个唯一的
日期
列,使用数据时间函数和类,并检查数据库中的现有日期。
PS:你不必从数据库中预先选择。另一种方法可能是在尝试插入具有现有日期值的数据集时获取错误。根据数据库表中日期列的唯一约束,insert将导致错误。你可以使用以下方法来避免这种行为
ON DUPLICATE KEY UPDATE
sql查询或捕获数据库适配器周围带有try/catch块的insert语句上的错误(如果在这种情况下抛出异常)。