我在以下代码中有一个名为 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=[]
那么,如果绑定(bind)正确通过(它识别所选位置),为什么它告诉我这是一个非法变量?
在数据库表中,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;
关于php - 非法变量名称/编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21540693/