2015-12-27 1 views
-1

Я новичок в базе данных Oracle. Я создал таблицу в Oracle. Я могу получить некоторое значение из HTML с помощью PHP, используя $_POST[], и соединение работает нормально.Предупреждение: oci_execute(): ORA-01821: формат даты не распознан

Теперь я хочу сохранить текущую дату с PHP в таблицу Oracle как тип даты. Но я не знаю, как правильно связать даты, и я получаю эту ошибку:

enter image description here

Вот код:

$year = $_POST["SALYR"]; 
$month = $_POST["SALMT"]; 
$empID = $_POST["EMPID"]; 
$dptCode = $_POST["DPTID"]; 
$salHD = 'A9'; 
$description = $_POST["DESCR"]; 
$amount = $_POST["ALAMT"]; 
$optID = 111; 
$trDate = date("Y/m/d", strtotime(date("Y/m/d"))); 

    $query = "INSERT INTO PAYROLLFILE VALUES (:bind1, :bind2, :bind3, :bind4, :bind5, :bind6, :bind7, :bind8, to_date(:bind9 ,'Y/m/d'))"; 
    $stid = oci_parse($conn, $query); 

    oci_bind_by_name($stid, ":bind1", $year); 
    oci_bind_by_name($stid, ":bind2", $month); 
    oci_bind_by_name($stid, ":bind3", $empID); 
    oci_bind_by_name($stid, ":bind4", $dptCode);  
    oci_bind_by_name($stid, ":bind5", $salHD); 
    oci_bind_by_name($stid, ":bind6", $description); 
    oci_bind_by_name($stid, ":bind7", $amount); 
    oci_bind_by_name($stid, ":bind8", $optID); 
    oci_bind_by_name($stid, ":bind9", $trDate); //it is line 46 
    $r = oci_execute($stid); //it is line 47 

Пожалуйста, скажите мне, где я сделал ошибку синтаксиса в преобразовании даты Oracle.

ответ

2

Заменить это заявление

$query = "INSERT INTO PAYROLLFILE VALUES (:bind1, :bind2, :bind3, :bind4, :bind5, :bind6, :bind7, :bind8, to_date(:bind9 ,'Y/m/d'))"; 

с этим запросом

$query = "INSERT INTO PAYROLLFILE VALUES (:bind1, :bind2, :bind3, :bind4, :bind5, :bind6, :bind7, :bind8, to_date(:bind9 ,'YY/mm/dd'))"; 
+0

благодаря Сработало вы можете сказать мне, что было неправильным, что только синтаксис или любые function.thanks – user5005768

+1

Вы пропускаете маску формата формата даты оракула. вы используете to_date (: bind9, 'Y/m/d')) ", но это неправильно. Одиночный Y или один m или один d не поддерживается в oracle. –

Смежные вопросы