簡體   English   中英

插入PHP語句不工作

[英]Insert statement doesnt work in PHP

好吧,如果有任何術語關閉...。所以我想在我的PHP代碼中使用此插入語句。 當我使用isql或sqlplus放置該語句時,該語句運行良好。 但是,當我在PHP中運行查詢時,它不會在表中插入任何內容。 不返回任何錯誤。 我正在使用PHP的PDO擴展。 http://us2.php.net/manual/zh/pdo.prepare.php

插入USER_KEY(CREATED_DATE,COMMENT,EXPIRATION_DATE,USER_KEY_ID)
值(SYSTIMESTAMP,NULL,
TO_TIMESTAMP('2012-02-02','YYYY-MM-DD'),key_sequence.NEXTVAL);

我的PHP代碼看起來像這樣,我正在使用CodeIgniter

$ dbh = self :: $ CI-> db-> conn_id;

$ sql =“插入到USER_KEY(CREATED_DATE,COMMENT,EXPIRATION_DATE,USER_KEY_ID)值(SYSTIMESTAMP,?,TO_TIMESTAMP(?,'YYYY-MM-DD'),key_sequence.NEXTVAL)”;

$ stmt = $ dbh-> prepare($ sql);

$ stmt-> execute(array(NULL,'2012-02-02'));

對於數據庫中的不同表,我的代碼中有相似的PHP插入語句,這些語句有效。 但是,那些表不使用任何時間戳,所以我想知道我對時間戳的使用是否會弄亂我在PHP中使用的insert語句? 還有關於為什么在不執行我的語句時沒有看到任何錯誤的解釋嗎?

更新/解決方案

所以我改變了綁定的方式

 $sql = INSERT INTO USER_KEY <br>
                    (CREATED_DATE, <br>
                     COMMENT, <br>
                     EXPIRATION_DATE, <br>
                     USER_KEY_ID)  <br>
         VALUES      (SYSTIMESTAMP, <br>
                     :comment,  <br>
                     TO_TIMESTAMP(:date, 'YYYY-MM-DD'), <br>
                     key_sequence.NEXTVAL); <br>

 $stmt = $dbh->prepare($sql); <br>
 $stmt->bindValue(':comment', $this->comment); <br>
 $stmt->bindValue(':date', $this->creation_date); <br>
 $execute(); <br>

 $var_dump($stmt->errorInfo());

以這種方式進行綁定返回錯誤

ORA-01830: date format picture ends before converting entire input string

從這個錯誤中,我得知我輸入的日期與SQL語句中TO_TIMESTAMP函數中的格式不匹配。
http://www.techonthenet.com/oracle/errors/ora01830.php

我不知道這一點,但是在oracle中DD表示[1-31]而不是[01-31]。 Oracle文檔中的信息

因此,我會試着改變我使用我綁定到SQL語句從日期的格式YmdYmj 由於j在PHP DateTime對象中代表[1-31]天。

如果我在任何方面都不對,請糾正我。 我有興趣知道為什么更改我對SQL語句進行綁定的方式會引發錯誤嗎? 因為我不太了解。

您需要在PHP中使用某種錯誤報告。 您的錯誤在第一行:

$dbh = $self::$CI->db->conn_id;

那應該是

$dbh = self::$CI->db->conn_id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM