0

我无法让这个工作。我搜索了这个网站并找到了许多其他关于此的帖子,但似乎没有一个有效。

这是我的简单代码:

if (isset($_POST['submit']))
{
$startDate = strtotime($_POST['from']);
$endDate = strtotime($_POST['to']);

for($i = $startDate; $i <= $endDate; $i = strtotime('+1 day', $i))
{
$date = date('Y-m-d',$i);
//echo $date . "<br>";
$sql = ("INSERT INTO `calendar` (`Cal_Date`) VALUES (`$date`)");
}
   if(!$result = $db->query($sql))
   {
   die('There was an error running the query [' . $db->error . ']');
   }

}

表格同样简单,日期以“YYYY-MM-DD”格式输入。我想要做的是用一系列日期填充我的数据库表。唯一发生的事情是插入了一行,它是“0000-00-00”,我怀疑这是因为我将该列设置为日期,而不是空值。当我回显结果时,一切正常,只是将其放入数据库似乎不起作用。我尝试了许多其他组合,INSERT包括:

$sql = $db->query("INSERT INTO `calendar` (`Cal_Date`) VALUES (`$date`)");

($db 来自 db_connect.php )

$sql = ("INSERT INTO `calendar` (`Cal_Date`) VALUES (`{$date}`)");

$sql = ("INSERT INTO calendar ('Cal_Date') VALUES ($date)");

$sql = ("INSERT INTO `calendar` (`Cal_Date`) VALUES (`$date`)");

...我认为甚至还有其他几个。我知道我的 db_connect.php 正在连接到数据库,因为我得到了:

$sql = ("SELECT * FROM calendar");

在页面下方,它工作正常。我已经这样做了太久了,我确信我只是错过了一些明显的东西。我会很感激你的反馈。

mySQL 5.5.24 PHP 5.3.13 Apache 2.2.22

4

3 回答 3

2

尝试不使用 ` 以获得您的价值,然后返回 php...,如下所示:

$sql = ("INSERT INTO calendar (`Cal_Date`) VALUES (".$date.")");

如果这没有帮助,请回显 SQL 并让我们确切知道构建的 SQL 是什么,这将为您提供更快的修复

于 2012-11-18T06:37:54.880 回答
1

字符串文字应该用单引号'(或双引号",如果ANSI_QUOTES禁用)字符引用,而不是反引号(在 MySQL 中仅用于引用 SQL 标识符)。

于 2012-11-18T07:23:50.370 回答
1

首先,无需将字符串包裹在圆括号中!

这应该可以解决问题!

$sql = "INSERT INTO `calendar` (`Cal_Date`) VALUES ('$date')";

一个更好但更难理解的解决方案(就引号而言):

$sql = 'INSERT INTO `calendar` (`Cal_Date`) VALUES (\''.$date.'\')';

这个也应该工作:

$sql = "INSERT INTO calendar (Cal_Date) VALUES ('$date')";

注意:反引号(`)仅用于字段名和表名,并且仅当您的表名或字段名中有空格时才需要!

使用单引号或双引号来分隔 SQL 中的字符串、日期、字符、varchars,而布尔值、空值和数值则不使用任何东西!

希望这有帮助!

于 2012-11-18T13:39:25.080 回答