PHP: 尝试在数据库中插入日期
PHP: Trying to insert dates in Database
我想将开始日期和结束日期之间的所有日期插入数据库中的 table。
我已经找到 two dates and the dates between 的代码。
现在的问题是 运行 代码时日期没有插入到我的数据库中。我的日期table中只显示0000-00-00
。
代码运行时也没有出现错误信息,所以我不知道我哪里错了。有人可以帮我解决这个问题吗?
这是我的代码:
$begin = new DateTime('2010-05-01');
$end = new DateTime('2010-05-10');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach ($period as $dt)
{
$newdate = $dt->format("Y-m-d ");
$statement = $pdo->prepare("INSERT INTO table (date) VALUES ($newdate)");
$statement->execute();
}
您忘记用单引号将 SQL 中的日期值括起来。因此 SQL 引擎试图将您的输入视为数字,但它不能(因为日期显然不是有效数字)。
但是您不应该像那样将原始数据包含到您的查询中。使用参数可以大大降低您犯此类简单语法错误的可能性(以及在处理外部数据输入时保护您的数据免受 SQL 注入)。
$statement = $pdo->prepare("INSERT INTO table (date) VALUES (:newdate)");
$statement->bindParam(':newdate', $newdate);
$statement->execute();
见PHP manual on using prepared statements
P.S。如果您的代码由于 SQL 错误而引发错误,您可能看不到它,除非您在创建连接时有 switched on PDO exception handling。
我想将开始日期和结束日期之间的所有日期插入数据库中的 table。
我已经找到 two dates and the dates between 的代码。
现在的问题是 运行 代码时日期没有插入到我的数据库中。我的日期table中只显示0000-00-00
。
代码运行时也没有出现错误信息,所以我不知道我哪里错了。有人可以帮我解决这个问题吗?
这是我的代码:
$begin = new DateTime('2010-05-01');
$end = new DateTime('2010-05-10');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach ($period as $dt)
{
$newdate = $dt->format("Y-m-d ");
$statement = $pdo->prepare("INSERT INTO table (date) VALUES ($newdate)");
$statement->execute();
}
您忘记用单引号将 SQL 中的日期值括起来。因此 SQL 引擎试图将您的输入视为数字,但它不能(因为日期显然不是有效数字)。
但是您不应该像那样将原始数据包含到您的查询中。使用参数可以大大降低您犯此类简单语法错误的可能性(以及在处理外部数据输入时保护您的数据免受 SQL 注入)。
$statement = $pdo->prepare("INSERT INTO table (date) VALUES (:newdate)");
$statement->bindParam(':newdate', $newdate);
$statement->execute();
见PHP manual on using prepared statements
P.S。如果您的代码由于 SQL 错误而引发错误,您可能看不到它,除非您在创建连接时有 switched on PDO exception handling。