2012-12-22 50 views
1

所以我被要求使用html表單向這個數據庫插入行。以下是表單的代碼:PHP文件多次檢查後沒有顯示任何內容

<html> 
<body> 
<div id="header1"> 
    <h1>Donar d'alta un client</h1> 
</div> 
<hr> 
<form action="alta.php" method="post"> 
    Numero: <input type="text" name="cnumero" /><br> 
    Nom: <input type="text" name="cnom" /><br> 
    Adreca: <input type="text" name="cadreca" /><br> 
    Codi Postal: <input type="text" name="ccp" /><br> 
    Poblacio: <input type="text" name="cpob" /><br> 
    Dni: <input type="text" name="cdni" /><br> 
    Email: <input type="text" name="cemail" /><br> 
    <input type="submit" value="Afegeix" /> 
</form> 
<hr> 
</body> 
</html> 

這是一個正常的形式,沒有什麼特別的,它的工作原理。 現在問題來了。在文件alta.php中,我有PHP代碼將所有這些信息插入到現有表的一行中。該表稱爲CLIENT,它具有所有這些參數以及另外3個參數,當您添加新行時,這些參數必須爲NULL。下面是alta.php的代碼:

<html> 
<body> 
<?php 
include 'vars.php'; 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 

$numero= $_POST['cnumero']; 
$nom= $_POST['cnom']; 
$adreca= $_POST['cadreca']; 
$codi_postal= $_POST['ccp']; 
$poblacio= $_POST['cpoblacio']; 
$dni= $_POST['cdni']; 
$email= $_POST['cemail']; 

$conn = oci_connect('u*******', 'u*******', '********'); 

if (!$conn) { 
    $e = oci_error(); 
    trigger_error(htmlentities($e['No em connectat a la BD'], ENT_QUOTES), E_USER_ERROR); 
} 

$stid = oci_parse($conn, "INSERT INTO client 
            (client_num, client_nom, client_adreca, client_codi_postal, client_poblacio, client_dni, client_email) 
          VALUES 
            (:client_num, :client_nom, :client_adreca, client_codi_postal, :client_poblacio, :client_dni, :client_email)"); 

oci_bind_by_name($stid, ":client_num", $numero); 
oci_bind_by_name($stid, ":client_nom", $nom); 
oci_bind_by_name($stid, ":client_adreca", $adreca); 
oci_bind_by_name($stid, ":client_codi_postal", $codi_postal); 
oci_bind_by_name($stid, ":client_poblacio", $poblacio); 
oci_bind_by_name($stid, ":client_dni", $dni); 
oci_bind_by_name($stid, ":client_email", $email); 


    $r = oci_execute($stid); 


    if ($r) { echo 'Client afegit correctament.'; } 
    if (!$r){ echo 'Hi ha hagut un error.'; } 

    oci_free_statement($stid); 
    oci_close($conn); 
?> 
     <br><br><br> 
     <div id="tornar"> 
      <li><a href="index2.html">Tornar a l'inici</a></li> 
     </div> 
</body> 
</html> 

問題是我的瀏覽器口口聲聲說有一個「內部服務器錯誤」。所以顯然有一段這段代碼不起作用。你們能幫我一下嗎?我花了太多時間思考它,我看不出有什麼不對。

非常感謝!

+5

'內部服務器錯誤'表示_go檢查您的錯誤日誌_!這也意味着你需要啓用'display_errors'。 'ini_set('display_errors',1); error_reporting(E_ALL);' –

+0

你在遠程服務器上運行/測試它嗎?如果是這樣,最好的做法是在自己的計算機上編輯它,在那裏調試它,然後進行部署。 – halfer

+0

不要在生產性服務器上啓用display_errors。這會將內部信息暴露給用戶。 – sfx

回答

2

看起來您的表單中的input names與您在PHP代碼中嘗試從$_POST獲得的內容不匹配。

+0

是的,謝謝。我改變了實際的輸入名稱到我在php文件中的名字,但它仍然說內部服務器錯誤。我輸入了關於錯誤的Michael Berkowsk,但仍然沒有任何反應。我得到同樣的錯誤,沒有描述。 –

2

我的猜測是你沒有正確安裝oracle庫。通常在遇到這樣的問題時,我會在代碼的許多位置放置echo 'it works' && exit;,直到它停止工作。然後我知道這是問題功能。

錯誤日誌也是一種可能性,但我經常在過去發現日誌中沒有任何內容。

+0

謝謝你。但問題是我看不到輸出。每當我填寫表單,它會將我重定向到alta.php,它會給我那個錯誤。我不知道我該如何測試這個以瞭解它從哪一點起不起作用。 –

相關問題