【问题标题】:error on insertion variable data in oracle database using php code使用 php 代码在 oracle 数据库中插入变量数据时出错
【发布时间】:2014-02-13 08:25:36
【问题描述】:

我正在尝试运行此 php 代码以在 oracle 数据库中插入值,但运行时显示错误。我的代码是:

<?php 
$c = oci_connect('system', 'passward', 'dbname');
$sql = "INSERT INTO EMPLOYEES(EMP_ID,JOB_ID) VALUES (:emp_id, ".'{$nw}'.")";
$compiled = oci_parse($c, $sql);
oci_bind_by_name($compiled, ':emp_id', $eid);
oci_bind_by_name($compiled, '.$nw.', $nw);
oci_execute($compiled);
?>

我得到以下错误

警告:oci_bind_by_name(): ORA-01036: 非法变量名称/编号 在第 16 行的 C:\xampp\htdocs\folder\add_emp.php 中

警告:oci_execute():ORA-00911:无效字符 C:\xampp\htdocs\folder\add_emp.php 在第 17 行

我知道问题出在哪里我写了$nw,但只是不知道正确的语法或方式。

【问题讨论】:

    标签: php oracle


    【解决方案1】:

    试试

    $sql = "INSERT INTO EMPLOYEES(EMP_ID,JOB_ID) VALUES (:emp_id, :nw)";
    

    您的查询中的问题是您正在关闭 " 然后将 {$nw} 完全连接起来,就像您将它放在单引号之间一样,php 知道它不应该用变量替换它,它只是一个字符串。所以您的查询将像这样到达 oracle:

    插入员工(EMP_ID,JOB_ID)值(whatever_int_in_eid,{$nw});

    【讨论】:

      【解决方案2】:

      你做错了,

      $sql = "INSERT INTO EMPLOYEES(EMP_ID,JOB_ID) VALUES (:emp_id, :nw)";
      $compiled = oci_parse($c, $sql);
      oci_bind_by_name($compiled, ':emp_id', $eid);
      oci_bind_by_name($compiled, ':nw', $nw);
      

      【讨论】:

      • 非常感谢 Mush Rikesh,,我做到了,而且成功了。
      • 很高兴帮助您接受它,如果它可以帮助您解决问题。
      • 您需要接受正确的答案。检查这个meta.stackexchange.com/questions/5234/…)
      • 我做到了,tick marj 现在是绿色的,这就是你想要表达的意思吗??
      猜你喜欢
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多