我有一个关于将日期从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
答案 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'];
}
?>