使用系统日期检查存储在数据库中的所有日期值

时间:2018-03-07 06:38:18

标签: php mysql pdo

我正在使用PHP(PDO),MYSQL。我的数据库中存储了许多date个值,并且我试图将系统日期与存储在数据库中的日期值逐个进行比较。

我可以比较单个日期值,但我无法比较所有日期值。我想将数据库中的所有日期值与我的系统日期进行比较,如果匹配则应该回显。

我知道这将是循环概念,但我不知道如何在其上运行循环。这是正确的概念还是什么?

 $sysdate= date("Y-m-d");//system date;

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM setremainder"); 
$stmt->execute();
$result=$stmt->fetch();
$r1=$result['datetime'];

将systemdate与datbase值进行比较

 if ($r1==$sysdate) {
    echo success";
}

1 个答案:

答案 0 :(得分:1)

如何使用WHERE子句(它也会更快),它将仅返回匹配的记录。

$sysdate= date("Y-m-d");//system date;

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $conn->prepare("SELECT * FROM setremainder where datetime = :datetime");
$stmt->execute(["datetime" => $sysdate]);
// Above 2 line will return records that only matches the record
foreach ($stmt as $row) {
    echo "success";
}

既然你提到你只需要在与记录匹配时打印一些东西,你也可以使用COUNT()函数,该函数只计算与给定系统日期的语句匹配的行数。

$sysdate= date("Y-m-d");//system date;

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $conn->prepare("SELECT count(*) FROM setremainder where datetime = :datetime");
$stmt->execute(["datetime" => $sysdate]);
// Above 2 line will return records that only matches the record
$number_of_rows = $stmt->fetchColumn();

注意:

确保您的数据库列日期格式和提取的系统日期参数相同或兼容