php - 非法变量名称/编号

标签 php sql oracle10g

我在以下代码中有一个名为 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/

相关文章:

php - Symfony 上的 Sentry : how to exclude `NotFoundHttpException`

php - 在 __construct() 函数中编写 INSERT 查询

php - 用户 'speedycm_root' @'localhost' 访问数据库 'speedycms' 被拒绝

mysql - SQL:查找相关字段的平均值的最大值

database - 在 oracle 中停止执行 sqlplus 错误的批处理文件

oracle - DBMS_REDEFINITION.start_redef_table 权限不足错误

php - 从表中删除条目并存储已删除条目中的值

Mysql,3表2分组

sql - 仅使用 SQL 的 MySQL INSERT

oracle - 参数值无效, 'directory'