Я пытаюсь вставить строку 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
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);
}
Вы должны указать дату в формате. Учитывая, что $ date имеет строковый тип данных,
$hist = oci_parse($conn, "INSERT into DCV_TABLE(.....,DATE_TIME) VALUES(..."',to_date(".$date1.",'DD-MM-YY HH24:MI:SS'))");
должен решить проблему.