1

そのため、html フォームを使用してこのデータベースに行を挿入するように依頼されました。フォームのコードは次のとおりです。

<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 と呼ばれ、このすべてのパラメーターと、新しい行を追加するときに NULL でなければならない 3 つのパラメーターがあります。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>

問題は、ブラウザが「Internal Server Error」があると言い続けることです。どうやら、このコードの一部が機能しないようです。少し手伝ってくれませんか?私はそれについて考えるのに多くの時間を費やしましたが、何が悪いのかわかりません。

どうもありがとう !

4

2 に答える 2

2

私の推測では、oracleライブラリが正しくインストールされていません。一般に、このような問題echo 'it works' && exit;では、コードが機能しなくなるまで、コード内のさまざまな場所に配置します。それが問題のある関数であることがわかります。

エラーログも発生する可能性がありますが、過去にログに何も記録されていないことがよくあります。

于 2012-12-23T00:20:03.907 に答える
2

フォームの が、PHP コードでinput names取得しようとしているものと一致しないようです。$_POST

于 2012-12-22T21:20:18.017 に答える