簡體   English   中英

使用預准備語句插入日期時間

[英]Insert a datetime with prepared statement

我正在嘗試使用預准備語句為庫應用程序插入日期時間。 這是迄今為止的代碼:

    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 

似乎沒有顯示任何錯誤。

任何幫助都會真的有用。

更新:

它確實有效。 我只是引用了錯誤的數據庫。 但我想為那些偶然發現的新人添加一點outro。

  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)工作。

嘗試這樣的事情:

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();

假設您的日期的表單輸入是名為“date”的類型輸入,這就是您的操作。 在PHP類型

$date = $_POST['date']

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

我知道在一個單一類型輸入中插入日期並不是一個好習慣,但我只是為了簡單起見而使用這個例子。 你可以找到自己的正確方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM