php - 在 MYSQL 中验证 DATE
问题描述
我有一个小问题。
如果现有的 DATA 是由另一个客户端设置的,我想检查 MYSQL。
所以,在这张照片中,你可以看到我不想成为
解决方案
属于日期的时候,使用php和mysql的日期时间函数。
首先使用DATE
类型列在数据库中存储日期。一个简短的例子,如何声明一个DATE
列。此示例包含UNIQUE
日期DATE
列的约束,因此一个值只能在此列中存储一次。
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(50) NOT NULL,
start_date DATE NOT NULL UNIQUE,
);
请记住,这是一个示例表。DATE
现在,您可以在本专栏中完成您要求的所有事情。
现在你必须在 PHP 端处理你的日期格式。我猜日历应用程序会发布日期格式,如图所示d/m/Y
。这种格式是可以接受的,但不适用于处理数据库或 php 代码中的日期。主要使用格式Y-m-d
。这种格式适合您的数据库的需要。
以下示例采用格式为您的日历日期的 post 参数,并从中d\m\Y
创建一个 phpDateTime
对象。
$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 数据库中获取数据。无论您使用什么数据库适配器,该过程都保持不变。在数据库表中声明一个唯一DATE
列,使用数据时间函数和类并检查数据库中的现有日期。
PS:您不必从数据库中预先选择。另一种方法可能是在尝试插入具有现有日期值的数据集时获取错误。根据数据库表中日期列的唯一约束,您的插入会导致错误。如果在这种情况下抛出异常,您可以通过使用类似ON DUPLICATE KEY UPDATE
sql 查询或使用数据库适配器周围的 try/catch 块捕获插入语句上的错误来避免这种行为。
推荐阅读
- react-google-maps - 有没有办法在 react-google-maps 中设置圆的最大和最小半径?
- reactjs - 为什么我无法通过 set State 在 React js 中更新数组中特定索引的值?
- java - Jenkins NextGeneration 警告插件:publishIssues 失败,没有 @DataBoundConstructor
- php - Docker:在不使用卷的情况下部署 php 应用程序容器
- scala - 使用 spark scala 根据数据框中的复杂条件过滤行
- webpack - 将文件从构建文件夹(构建后)移动到具有相对路径的不同文件夹 - Webpack
- c# - Visual Studio 解决方案上下文中的“更新所有项目的模型”是什么?
- java - Java Nashorn在java中构建json数组对象找不到方法
- javascript - 努力了解某些函数参数的值是如何确定的
- excel - 使用选项按钮在 excel 中动态搜索完全匹配和部分匹配