2013-10-04 93 views
-3

我使用此代码使用PHP和数据接入,但在Oracle数据库中,我使用NOT NULL值。但是当我刷新页面,然后得到错误数据插入到Oracle数据库:未定义指数:operator_id

未定义指数:在

代码

<?php 
{ 
    $ora_conn = oci_connect('system','oracle','//localhost/XE'); 
    if(!$ora_conn) 
    { 
     $m = oci_error(); 
     echo $m['message'], "\n"; 
     exit; 
    } 
    else 
    { 
     //print "You are connected to the database!<br/>"; 
    } 
    if (isset($_POST['Submit'])) 
    { 
     $optid = $_POST['operator_id']; 
     $optdec = $_POST['operater_description']; 
     $empid = $_POST['employee_id']; 
     $empmail = $_POST['employee_emailid']; 
    } 
    $query = "SELECT * FROM optr_add WHERE OPERATOR_ID= 
     '".$_POST['operator_id']."' OR   
     employee_emailid = '".$_POST['employee_emailid']."' 
     OR employee_id =  '".$_POST['employee_id']."'"; 
    $s=oci_parse($ora_conn, $query); 
    oci_execute ($s,OCI_DEFAULT); 
    $objResult = oci_fetch_array($s); 
    if($objResult) 
    { 
     echo "<script>alert('Operator ID already exist')</script>"; 
    } 
    else 
    { 
     $query = 'INSERT INTO optr_add 
      (operator_id , operater_description ,employee_id,employee_emailid)**<<---here**  
      VALUES (:operator_id ,:operater_description,:employee_id,:employee_emailid)'; 

     $s=oci_parse($ora_conn, $query); 
     oci_bind_by_name($s, ':operator_id', $optid); 
     oci_bind_by_name($s, ':operater_description', $optdec); 
     oci_bind_by_name($s, ':employee_id', $empid); 
     oci_bind_by_name($s, 'employee_emailid', $empmail); 
     if (isset($_POST['Submit'])) 
      $objExecute=oci_execute($s); 
     if (isset($_POST['Submit'])) 
     { 
      if (!isset($optid) || empty($optid)) 
      { 
       //header("refresh:1110;url=Define_Organization.php"); 
       echo"<script>alert('Submit Successfully')</script>"; 
       exit(); 
       echo"<script>alert('Please enter your data')</script>"; 
       exit(); 
      } 
     } 
     oci_free_statement($s); 
     oci_close($ora_conn); 
    } 
} 
?> 
+1

这被问道相当频繁。它与Oracle无关。看看[PHP的:“注意:未定义的变量”和“注意:未定义的索引”](http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) –

回答

0

使用operator_id下面的代码:

$optid = isset($_POST['operator_id']) ? $_POST['operator_id'] : ''; 
$optdec = isset($_POST['operater_description']) ? $_POST['operater_description'] : ''; 
$empid = isset($_POST['employee_id']) ? $_POST['employee_id'] :''; 
$empmail = isset($_POST['employee_emailid']) ? $_POST['employee_emailid'] : ''; 

可能是您没有从表单中发布operator_id的数据。

+0

谢谢,但我有这条线上的错误注意:未定义的索引:operator_id在 $查询=“选择*从optr_add在哪里OPERATOR_ID ='”。$ _ POST ['operator_id']。“' – user2842666

0

您确定在此页面上通过POST收到“operator_id”字段吗?

这个问题似乎是

$_POST['operator_id'] 

控制用的var_dump()或将您的变量在isset

if(isset($_POST['operator_id']){ 
//do something 
} 
+0

plz解释我是新的php编码 – user2842666

0

你故意刷新页面,您接收到的数据?刷新页面时会是什么?如果刷新页面时不需要执行任何操作,则应修改if语句。现在,如果提交了邮件,你会进入如果...当你没有帖子时,你去其他部分...你有一个错误,因为你没有在你的手中发布数据,你正试图做一些事情后数据。

0

使用更新的代码,并作出尝试:

<?php 
$ora_conn = oci_connect('system','oracle','//localhost/XE'); 
if(!$ora_conn) 
{ 
    $m = oci_error(); 
    echo $m['message'], "\n"; 
    exit; 
} 
else 
{ 
    //print "You are connected to the database!<br/>"; 
} 
if (isset($_POST['Submit'])) 
{ 
    $optid = $_POST['operator_id']; 
    $optdec = $_POST['operater_description']; 
    $empid = $_POST['employee_id']; 
    $empmail = $_POST['employee_emailid']; 
    $query = "SELECT * FROM optr_add WHERE OPERATOR_ID= 
     '".$_POST['operator_id']."' OR   
     employee_emailid = '".$_POST['employee_emailid']."' 
     OR employee_id =  '".$_POST['employee_id']."'"; 
    $s=oci_parse($ora_conn, $query); 
    oci_execute ($s,OCI_DEFAULT); 
    $objResult = oci_fetch_array($s); 
    if($objResult) 
    { 
     echo "<script>alert('Operator ID already exist')</script>"; 
    } 
    else 
    { 
     $query = 'INSERT INTO optr_add 
      (operator_id , operater_description ,employee_id,employee_emailid)**<<---here**  
      VALUES (:operator_id ,:operater_description,:employee_id,:employee_emailid)'; 

     $s=oci_parse($ora_conn, $query); 
     oci_bind_by_name($s, ':operator_id', $optid); 
     oci_bind_by_name($s, ':operater_description', $optdec); 
     oci_bind_by_name($s, ':employee_id', $empid); 
     oci_bind_by_name($s, 'employee_emailid', $empmail); 
     if (isset($_POST['Submit'])) 
      $objExecute=oci_execute($s); 
     if (isset($_POST['Submit'])) 
     { 
      if (!isset($optid) || empty($optid)) 
      { 
       //header("refresh:1110;url=Define_Organization.php"); 
       echo"<script>alert('Submit Successfully')</script>"; 
       exit(); 
       echo"<script>alert('Please enter your data')</script>"; 
       exit(); 
      } 
     } 
     oci_free_statement($s); 
     oci_close($ora_conn); 
    }  
} 


?> 
+0

当我提交带有空值的添加按钮时,我得到新的错误 oci_execute():ORA-01400:不能将NULL插入(“SYSTEM”。“OPTR_ADD”。“OPERATOR_ID”) – user2842666

+0

但这个编码部分不是工作 回声“”; 出口(); – user2842666

+0

看来你错过一些输入。好之前执行oci_execute()尝试的print_r($ _ POST)或单独回声$ _ POST [“经营者”]等。然后尝试执行oci_execute() – Nes