从PHP将日期插入oracle数据库

时间:2014-08-27 05:10:02

标签: php sql oracle date

我有一个关于将日期从PHP插入Oracle DB的问题

所以我在我的PHP中有这个,

$delivDate = strval($_POST['deliveryDate']);

echo $delivDate; //Just for checking

$delivInsertionSql = "INSERT INTO DELIVERY (DELIVERY_DATE) 
                      VALUES (to_date('".$delivDate ."','MM/DD/YYYY hh24:mi:ss'))";
$delivInsertionParse = oci_parse($conn, $delivInsertionSql);
oci_execute($delivInsertionParse);

问题是,我没有在数据库中看到任何新记录。 DELIVERY_DATE的数据类型为DATE

2 个答案:

答案 0 :(得分:2)

几天前我面临同样的问题,这是日期格式问题。所以我改变了日期格式,它对我有用。您可以尝试下面的代码并测试它,如果它可以工作,而不是根据您的需要修改代码。

$delivDate = date('d-m-Y h:i:s', strtotime($_POST['deliveryDate']));    
INSERT INTO DELIVERY (DELIVERY_DATE) VALUES (to_date('".$delivDate."','dd-mm-yy hh24:mi:ss'))";

答案 1 :(得分:1)

我猜它是一个日期格式问题,但你需要有一个oci_error语句来公开任何与sql相关的错误。

请参阅http://php.net/manual/en/function.oci-execute.php的oci_execute部分。有一些例子,其中oci_execute用于if语句,暗示它是一个布尔返回。如果是false,则将fork分解为oci_error代码并公开你的sql问题。

摘自上面的链接以节省您的时间:

<?php 
$q = oci_parse($c, ""); 
if($q != false){ 
    // parsing empty query != false 
    if(oci_execute($q){ 
        // executing empty query != false 
        if(oci_fetch_all($q, $data, 0, -1, OCI_FETCHSTATEMENT_BY_ROW) == false){ 
            // but fetching executed empty query results in error (ORA-24338: statement handle not executed) 
            $e = oci_error($q); 
            echo $e['message']; 
        } 
    } 
    else{ 
        $e = oci_error($q); 
        echo $e['message']; 
    } 
} 
else{ 
    $e = oci_error($link); 
    echo $e['message']; 
} 
?>