[英]Illegal Variable Name/Number
我在以下代碼中有一個名為database_work_location
的字段:
$database_work_location =& new Select_Database_Work_Location();
$database_work_location->setSelected($in['database_work_location']);
$form->addElement('database_work_location', $database_work_location );
然后使用以下代碼將其顯示在表單上:
<p>
Database Location:<br />
<?= $form->render('database_work_location'); ?>
</p>
到目前為止,一切正常,我可以選擇一個完全沒有問題的位置。
最后,我使用以下代碼將其發送到數據庫:
case 'DATABASE':
$args[] = array('database_work_location', $in['database_work_location']);
$DB->query("
INSERT INTO request_database
(
database_work_location
)
VALUES (
:database_work_location
)
"
,$args
);
break;
但是,嘗試提交表單時出現以下錯誤,我不知道為什么。
SQL Error: 1036 - ORA-01036: illegal variable name/number
[query]
INSERT INTO request_database
(
database_work_location
)
VALUES (
:database_work_location
)
[binds] request_cn => [9867520000] length=[] created_by => [someone] length=[] database_work_location => [theplace] length=[]
因此,如果綁定正確通過(它會識別所選位置),為什么它告訴我這是一個非法變量?
在數據庫表中,列database_work_location
是大小為100的varchar2,老實說我看不到問題。
嘗試像這樣使用PDOStatement:
case 'DATABASE':
$stm = $DB->prepare('INSERT INTO request_database(database_work_location)
VALUES (:database_work_location)');
$stm->bindParam(':database_work_location', $in['database_work_location']);
$stm->execute();
break;
我已經實現了您的代碼,現在可能效果很好
case 'DATABASE':
$args[] = array('database_work_location', $in['database_work_location']);
$DB->query("
INSERT INTO request_database
(
database_work_location
)
VALUES (
database_work_location
)
"
,$args
);
break;
嘗試這個 :
case 'DATABASE':
$args = array('database_work_location', $in['database_work_location']);
$DB->query("
INSERT INTO request_database
(
database_work_location
)
VALUES (
database_work_location
)
"
,$args
);
break;
祝好運。
如果您不想使用Rida建議的解決方案(這是更好的方法),我認為您的錯誤是使用了錯誤的名稱,驅動程序無法將列名與數據區分開。
嘗試這個:
$args[] = array('database_work_location_data', $in['database_work_location']);
$DB->query("
INSERT INTO request_database
(
database_work_location
)
VALUES (
:database_work_location_data
)
"
,$args
);
break;
如果我不清楚,問我。
為什么不呢?
case 'DATABASE':
$query = 'INSERT INTO request_database(database_work_location)
VALUES ('. $in['database_work_location'] .')';
$stm = $DB->prepare($query);
$stm->execute();
break;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.