我在以下代码中有一个名为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,老实说,我看不出这个问题。
答案 0 :(得分:4)
尝试像这样使用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;
答案 1 :(得分:0)
我已经实现了您的代码,现在它可能运行良好
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;
答案 2 :(得分:0)
试试这个:
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;
祝你好运。
答案 3 :(得分:0)
如果您不想使用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;
如果我不清楚,请问我。
答案 4 :(得分:-1)
为什么不呢?
case 'DATABASE':
$query = 'INSERT INTO request_database(database_work_location)
VALUES ('. $in['database_work_location'] .')';
$stm = $DB->prepare($query);
$stm->execute();
break;