2012-07-09 66 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