2012-07-09 71 views
2

我正在尝试使用预准备语句为库应用程序插入日期时间。这是目前为止的代码:用准备好的语句插入日期时间

global $dbh; 
    $query = "INSERT INTO `loan` SET 
      `title` = (?), //example value - Lord of the Rings 
      `description` = (?), //example value - Trilogy 
      `start_date` = (?), //example value 20120701 in String datatype 
      `end_date` = (?)"; //example value 20120702 in String datatype 

    $statement = $dbh->prepare($query); 
    $statement->bind_param("ssss", $title,$description,$startDate,$endDate); 

    $statement->execute(); 
    print $statement->error; //to check errors 
    $statement->close(); 

但是,我似乎无法将此值插入行中。同时,不知何故

  print $statement->error 

似乎并没有显示任何错误。

任何帮助都会真的做到。

更新:

它实际上工作。我只是引用了错误的数据库。但是,我想为偶然遇到这个问题的新人添加一点点改进。

  1. 删除评论/答案中提到的所有评论,因为他们会弄乱你的字符串。

  2. 对于DATETIME,请记住指定数据类型为String,因为MySQL只能识别String数据类型。如果您没有使用准备好的查询,这意味着您必须为这些值添加引号。

  3. 插入将导致日期(2012-07-01 00:00:00)格式,因为未指定时间。

  4. 这两个SQL查询都可以使用。 INSERT INTO tbl_name SET col_name = value或INSERT INTO tbl_name(col_name)VALUES(value)work。

+0

嘿nickb,我尝试用这个查询直接插入到这张表中'INSERT INTO loan SET title ='Lord of the Rings',description ='Trilogy',start_date ='20120715',end_date ='20120720''作品 – bryansis2010 2012-07-09 14:07:42

+0

我希望在您的实际代码中不存在“// example value”注释,因为'//不是mysql中的有效注释。 – lanzz 2012-07-09 14:09:21

+0

hey lanz,nope示例值不是我的代码的一部分。为了理解目的,它们仅被插入到该代码中。你可以考虑没有任何评论的代码。 – bryansis2010 2012-07-09 14:10:58

回答

4

尝试是这样的:

global $dbh; 
$query = "INSERT INTO loan (title, description, start_date, end_date) VALUES (?,?,?,?)" 

$statement = $dbh->prepare($query); 
$statement->bind_param("ssss", $title,$description,$startDate,$endDate); 

$statement->execute(); 
print $statement->error; //to check errors 
$statement->close(); 
+1

我曾尝试将sql语句更改为此配置,并且它无法工作。 – bryansis2010 2012-07-09 14:37:13

-3

假设你的表单输入您的日期被命名为“日期”的输入类型,这里是你做了什么。在PHP类型

$date = $_POST['date'] 

$query = "INSERT INTO `loan` SET 
      `title` = (?), 
      `description` = (?), 
      `start_date` = ".$date. //Insert variable here 
      "`end_date` = (?)"; 

我知道这不是很好的做法,插入一个单一类型输入一个日期,但我只是用,仅仅为了简洁这个例子。你可以找出自己的正确方法。

+0

嘿redelman431,我实际上已经插入了一个特定的日期,由一个表单输入收集。因此,'mktime()'可能不是我真正需要的。 – bryansis2010 2012-07-09 14:38:04

+0

这是一个新的例子。这是你想要的吗? – DrinkJavaCodeJava 2012-07-09 14:50:23

+0

是的!假定它遵循YYYYMMDD格式 – bryansis2010 2012-07-09 15:09:00