我正在使用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";
}
答案 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();
确保您的数据库列日期格式和提取的系统日期参数相同或兼容