Codeigniter 中的 Oracle 查询给出 ORA-01722 和 ORA-01756
Oracle Query in Codeigniter giving ORA-01722 and ORA-01756
我通常在我的网站上使用 mysql 数据库,但我想了解更多关于 oracle 的信息...
我的代码在 2 天前工作,但现在它给出了一条错误消息,例如 ORA-number
这是我的数据库字段
KODE_GUDANG CHAR
GUDANG CHAR
LASTUPDATE CHAR
KODE_UNIT CHAR
NOMER_REKJURNAL CHAR
KODE_GUDANG_KREDIT CHAR
这是我要查询的模型
function getDataOneColumn($getCol, $table, $column, $id) {
return $this->db->query("SELECT $getCol as val FROM $table WHERE $column = $id")->row_array();
}
这是我的控制器的错误:ORA-01722
$this->data['no_rek'] = ($this->data['no_rek'] =='')?$this->m_dao->getDataOneColumn("NOMER_REKJURNAL","TBL_MASTER_GUDANG","KODE_GUDANG",$this->data['kode_gdg'])['VAL']:$this->data['no_rek'];
然后我阅读了文档,它的意思是“你执行了一个 SQL 试图将字符串转换为数字的语句”
我尝试将我的代码更改为
$this->data['no_rek'] = ($this->data['no_rek'] =='')?$this->m_dao->getDataOneColumn("NOMER_REKJURNAL","TBL_MASTER_GUDANG","KODE_GUDANG",'"'.$this->data['kode_gdg'])['VAL'].'"':"'".$this->data['no_rek']."'";
这个给出了另一个 ORA 错误,ORA-01756。它的意思是“你试图执行一个包含没有被两个单引号包围的字符串的语句”
新错误
Error Number: 1722
ORA-01722: invalid number
SELECT NOMER_REKJURNAL as val FROM TBL_MASTER_GUDANG WHERE KODE_GUDANG = 04
Filename: C:/xampp/htdocs/formula/system/database/DB_driver.php
Line Number: 691
有人能告诉我为什么我的代码在 2 天后出现错误吗?
和
如何解决这个错误?
谢谢
看了很多post的ORA错误后,我可以解决我的问题了。
我只需要添加 " ' ".$val." ' "
$this->data['no_rek'] = ($this->data['no_rek'] =='')?$this->m_dao->getDataOneColumn("NOMER_REKJURNAL","TBL_MASTER_GUDANG","KODE_GUDANG","'".$this->data['kode_gdg']."'")['VAL']:$this->data['no_rek'];
我通常在我的网站上使用 mysql 数据库,但我想了解更多关于 oracle 的信息... 我的代码在 2 天前工作,但现在它给出了一条错误消息,例如 ORA-number 这是我的数据库字段
KODE_GUDANG CHAR
GUDANG CHAR
LASTUPDATE CHAR
KODE_UNIT CHAR
NOMER_REKJURNAL CHAR
KODE_GUDANG_KREDIT CHAR
这是我要查询的模型
function getDataOneColumn($getCol, $table, $column, $id) {
return $this->db->query("SELECT $getCol as val FROM $table WHERE $column = $id")->row_array();
}
这是我的控制器的错误:ORA-01722
$this->data['no_rek'] = ($this->data['no_rek'] =='')?$this->m_dao->getDataOneColumn("NOMER_REKJURNAL","TBL_MASTER_GUDANG","KODE_GUDANG",$this->data['kode_gdg'])['VAL']:$this->data['no_rek'];
然后我阅读了文档,它的意思是“你执行了一个 SQL 试图将字符串转换为数字的语句”
我尝试将我的代码更改为
$this->data['no_rek'] = ($this->data['no_rek'] =='')?$this->m_dao->getDataOneColumn("NOMER_REKJURNAL","TBL_MASTER_GUDANG","KODE_GUDANG",'"'.$this->data['kode_gdg'])['VAL'].'"':"'".$this->data['no_rek']."'";
这个给出了另一个 ORA 错误,ORA-01756。它的意思是“你试图执行一个包含没有被两个单引号包围的字符串的语句”
新错误
Error Number: 1722
ORA-01722: invalid number
SELECT NOMER_REKJURNAL as val FROM TBL_MASTER_GUDANG WHERE KODE_GUDANG = 04
Filename: C:/xampp/htdocs/formula/system/database/DB_driver.php
Line Number: 691
有人能告诉我为什么我的代码在 2 天后出现错误吗? 和 如何解决这个错误? 谢谢
看了很多post的ORA错误后,我可以解决我的问题了。 我只需要添加 " ' ".$val." ' "
$this->data['no_rek'] = ($this->data['no_rek'] =='')?$this->m_dao->getDataOneColumn("NOMER_REKJURNAL","TBL_MASTER_GUDANG","KODE_GUDANG","'".$this->data['kode_gdg']."'")['VAL']:$this->data['no_rek'];