Вставка строки DateTime в оракула в PHP

1

Я пытаюсь вставить строку DateTime в поле oracle TIMESTAMP, но не вставлять ее.

PHP-код:

echo "dat1: ".$dat1; // Date:7-10-2015 14:16:52 
$datee1 = new DateTime($dat1);
echo  "  "."<b>Date Converted:</b> ".$date1=$datee1->format('d-m-y H:i:s'); // 07-10-15 14:16:52

$hist = oci_parse($conn, "INSERT into DCV_TABLE(.....,DATE_TIME) VALUES(..."','".$date1."')");

 oci_execute($hist);
 echo "record inserted";
 }
 oci_close($conn);

ОШИБКА:

( ! ) Warning: oci_execute(): ORA-01843: not a valid month in C:\wamp\www\Monitor\client.php on line 65
Теги:
datetime
timestamp

2 ответа

0
function oracle_insert_sql($conn,$table, $array) {
    $query = "INSERT INTO ".$table;
    $fis = array();
    $vas = array();
    foreach($array as $field=>$val) {
        $fis[] = "$field"; //you must verify keys of array outside of function;
        $fis_colon[]=":"."$field"; //unknown keys will cause mysql errors; //there is also sql injection risc; 
        $vas[] = "'".mysql_real_escape_string($val)."'";
    }
    $query .= " (".implode(", ", $fis).") VALUES (".implode(", ", $fis_colon).")"; // echo $query; $stid = oci_parse($conn, $query);

    //print_r($array);

    //oci_bind_by_name($stid, ':BAR_CODE',$array['BAR_CODE']); //oci_bind_by_name($stid, ':SOL_ROLL_NO', $array['SOL_ROLL_NO']); //oci_bind_by_name($stid, ':PHONE_NUMBER', $array['PHONE_NUMBER']);

    foreach($array as $field=>$val) {
        oci_bind_by_name($stid, ':'.$field,$array[$field]);
    }

    return oci_execute($stid);
}
0

Вы должны указать дату в формате. Учитывая, что $ date имеет строковый тип данных,

$hist = oci_parse($conn, "INSERT into DCV_TABLE(.....,DATE_TIME) VALUES(..."',to_date(".$date1.",'DD-MM-YY HH24:MI:SS'))");

должен решить проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню