2012-11-18 86 views
0

我无法正常工作。我搜索了这个网站,发现很多关于这个的帖子,但是没有一篇似乎有效。使用mysqli插入到mysql数据库时遇到困难

这里是我的简单的代码:

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,Not Null。当我回应结果时,一切都完美无缺,只是将它放入db似乎并不奏效。我已经试过INSERT线包括的许多其他组合:

$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 = $db->query("INSERT INTO `calendar` (`Cal_Date`) VALUES (`$date`)"); 

($ DB是db_connect.php)...我想即使其他几个。我不知道我的db_connect.php被连接到数据库,因为我已经有了:

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

进一步下跌的页面,它的正常工作。我一直在这么做太久,我相信我只是错过了一些明显的东西。我会很感激你的反馈。

的MySQL 5.5.24 PHP 5.3.13 的Apache 2.2.22

+1

看到这里http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php –

+0

为什么不直接在数据库中存储的开始和结束日期,而不是在每一个日期单独的记录之间?你确定你想要这个数据结构吗? – eggyal

+0

@eggyal是的,我确实希望这样。我正在制定员工工作计划,我需要所有日期。 –

回答

1

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

+0

我确实知道,虽然我明白你为什么会认为我没有。我一直在尝试从字面上找到所有可以找到的东西,并且在其他文章中提到了添加这些内容的内容。感谢您的答复。 –

+0

@ArewrewFox:所以,要清楚,使用字符串引用已解决您的问题? – eggyal

+0

是的,这是正确的。我试过'$ sql =(“INSERT INTO calendar(Cal_Date)VALUES('$ date')”);'并且它也不起作用。 –

2

尝试没有`你的价值,并弹回PHP ...在:

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

如果这并没有帮助,回声SQL并让我们确切知道内置的SQL是什么,这将网络你更快的修复

+0

我完全像你一样进入,但没有运气。我编辑我的帖子,以显示正在尝试以及我的服务器,SQL和PHP版本。感谢您的回复 –

+1

您可以在每种情况下回显$ sql,以便我们可以看到实际的SQL是什么,可能更容易确定发生了什么 – duellsy

+1

INSERT INTO calendar(Cal_Date)VALUES('2012-10 -01')' –

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中使用单引号或双引号来分隔字符串,日期,字符,变量以及布尔值,空值和数值的任何值!

希望这有助于!

相关问题