2013-10-04 92 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