使用预准备语句插入日期时间

bry*_*bee 4 php datetime mysqli pdo 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();
Run Code Online (Sandbox Code Playgroud)

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

            print $statement->error 
Run Code Online (Sandbox Code Playgroud)

似乎没有显示任何错误.

任何帮助都会真的有用.

更新:

它确实有效.我只是引用了错误的数据库.但是我想为偶然发现的新人添加一点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)工作.

Val*_*yev 6

尝试这样的事情:

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();
Run Code Online (Sandbox Code Playgroud)

  • 我也尝试将 sql 语句更改为此配置,但无法正常工作。 (2认同)