使用mysqli插入mysql数据库时遇到问题

时间:2012-11-18 06:20:39

标签: php mysql mysqli

我无法解决这个问题。我搜索了这个网站,发现了很多关于此的帖子,但似乎都没有。

这是我的简单代码:

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

3 个答案:

答案 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中的字符串,日期,字符,变量,并且不包括布尔值,空值和数值!

希望这有帮助!