我无法解决这个问题。我搜索了这个网站,发现了很多关于此的帖子,但似乎都没有。
这是我的简单代码:
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”,我怀疑这是因为我将该列设置为Date,而不是Null。当我回应结果时,一切都很完美,它只是让它进入数据库似乎不起作用。我尝试了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
答案 0 :(得分:2)
尝试没有`为你的价值,然后轻弹回到php ...,如:
$sql = ("INSERT INTO calendar (`Cal_Date`) VALUES (".$date.")");
如果这没有帮助,请回显SQL并让我们确切地知道构建的SQL是什么,这将为您提供更快的修复
答案 1 :(得分:1)
String literals应引用单引号'
(或双引号"
,如果ANSI_QUOTES
已禁用)字符,而不是反引号(在MySQL中是仅用于引用SQL标识符。)
答案 2 :(得分: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中的字符串,日期,字符,变量,并且不包括布尔值,空值和数值!
希望这有帮助!