2017-02-08 2 views
0

Ich habe diese Methode in meinem Modell speichern:Phalcon Oracle Datetime-Fehler, wenn die Zeit verwendet wird

public function save($data = null, $whiteList = null){ 
    $res = false; 
    $sql = ''; 
    $di = \Phalcon\DI::getDefault(); 
    try { 
     $param = array("[fecha] = to_date('" . $this->fecha . "', 'YYYY-MM-DD HH24:MI:SS') and [parametro_id] = :parametro_id:", 
         "bind" => array("parametro_id" => $this->parametro_id)); 
     $primero = Instantaneos::findFirst($param); 
     if ($primero){ 
      $this->instantaneo_id = $primero->instantaneo_id; 
     } else { 
      $sql = "select AZUL_S_INSTANTANEOS.nextval from dual"; 
      $result = $di->getShared('db')->query($sql); 
      while($row = $result->fetchArray()){ 
       $this->instantaneo_id = $row['NEXTVAL']; 
      } 
     } 
     $this->fecha = date('d/M/y', strtotime($this->fecha)); 
     $res = parent::save($data, $whiteList); 
     $res = true; 
    } catch (Exception $ex) { 
     $res = false; 
     $this->appendMessage(new Message($ex->getMessage())); 
    } 
    return $res; 
} 

Und es funktioniert, aber wenn ich diese Zeile ändern:

$this->fecha = date('d/M/y', strtotime($this->fecha)); 

Mit dieser:

$this->fecha = date('d/M/y H:i:s', strtotime($this->fecha)); 

ich diesen Fehler:

SQLSTATE[HY000]: General error: 1830 OCIStmtExecute: ORA-01830: date format picture ends before converting entire input string 

(ext \ pdo_oci \ oci_statement.c: 148) Und ich muss die Zeitinformation speichern, ich versuche, meine eigene Speichermethode zu erstellen, ohne parent :: save, schreibe meine eigene sql beim Einfügen oder Aktualisieren:

$sql_i = "insert into AZUL_INSTANTANEOS values(%d,%d,to_date('%s', 'YYYY-MM-DD HH24:MI:SS'),%f,'%s')"; 
    $sql_u = "update AZUL_INSTANTANEOS set val = %f, valf = '%s' where instantaneo_id = %d"; 

Und mit:

$db->execute($sql); 

Aber ich bekomme einen anderen Fehler:

Maximum execution time of 30 seconds exceeded in <b>\app\config\services.php</b> on line <b>172</b><br /> 

ich verwende:

  1. XAMPP 1.8.2 (PHP Version 5.4.31, Apache/2.4.10 (Win32))
  2. Oracle Database 11g Enterprise Edition Veröffentlichung 11.2.0.1.0 - Produktion
  3. Phalcon 2.1.0b

¿Irgendwelche Beratung ?, thx.

Antwort

1

Oracle wird in Phalcon nicht vollständig unterstützt. Es gibt einen Treiber im Inkubator here, den Sie verwenden können.

Oracle hat auch eine andere Syntax, die Phalcon PHQL möglicherweise nicht erkennen kann.

Ich würde vorschlagen, dass Sie beginnen, indem Sie Ihre Anwendung SQL-Anweisung protokollieren, so dass Sie sehen können, was an die Datenbank gesendet wird und dann herausfinden, wie Sie es korrigieren.

Werfen Sie einen Blick auf this Seite und nach unten scrollen, wo es heißt Logging SQL Statements

dass hinzufügen und einen Blick auf das, was mit Ihrer Anfrage vor sich geht.

Verwandte Themen