2016-05-09 12 views
-1

私はフォームの入力を要求するためのHTML5文書を持っています(employee.phpとして保存されています)。html5フォームをSQLデータベースに接続できません。

また、私はローカルデータベースにフォームを接続するためのPHPのドキュメント(SQLConnectionProcess.php)を作成しました。私はXAMPPとPHPmyAdminを使用しています。

employee.php:

<html> 
<body> 

<form name="EmployeeDatabase" action="SQLConnectionProcess.php" method="post"> 

<link rel="stylesheet" href="css.css"> 

<h1>EMPLOYEE DATABASE</h1> 

Employe Card NO: <input type="text" name="cardNO" ><br><br> 
Employee NO: <input type="text" name="employeeNO" ><br><br> 
Employee Name: <input type="text" name="employeename"><br><br> 
Nationality: <input type="text" name="nationality"><br><br> 
Profession: <input type="text" name="profession"><br><br> 
DOB: <input type="text" name="DOB"><br><br> 
DOJ: <input type="text" name="DOJ"><br><br> 
DOA(VisitVisa): <input type="text" name="DOA"><br><br> 
Company Code: <input type="text" name="companycode"><br><br> 
Sponsor Code: <input type="text" name="sponsorcode"><br><br> 
Visa Type: <input type="text" name="visatype"><br><br> 
Status: <input type="text" name="status"><br><br> 

<input type="submit" name="formSubmit" value="Submit"> 

<?php 

?> 

</form> 

</body> 
</html> 

SQLConnectionProcess.php:

<?php 

$con = mysql_connect('localhost','root','mysql'); 
mysql_select_db('employee_info',$con); 


if(isset($_POST['formSubmit'])){ 
    $cardNO= isset($_POST['cardNO']) ? $_POST['cardNO'] : 0; 
    $employeeNO= isset($_POST['employeeNO']) ? $_POST['employeeNO'] : 0; 
    $employeename= isset($_POST['employeename']) ? $_POST['employeename'] : ""; 
    $nationality= isset($_POST['nationality']) ? $_POST['nationality'] : ""; 
    $profession= isset($_POST['profession']) ? $_POST['profession'] : ""; 
    $DOB= isset($_POST['DOB']) ? $_POST['DOB'] : ""; 
    $DOJ= isset($_POST['DOJ']) ? $_POST['DOJ'] : ""; 
    $DOA= isset($_POST['DOA']) ? $_POST['DOA'] : ""; 
    $companycode = isset($_POST['companycode']) ? $_POST['companycode'] : 0; 
    $sponsorcode= isset($_POST['sponsorcode']) ? $_POST['sponsorcode'] : 0; 
    $visatype= isset($_POST['visatype']) ? $_POST['visatype'] : ""; 
    $status= isset($_POST['status']) ? $_POST['status'] : ""; 


    $sql = "INSERT INTO employee_info info(EmployeeCardNO,EmployeeNO,EmployeeName,Nationality,Profession,DOB,DOJ,DOA,CompanyCode,SponsorCode,VisaType,Status) VALUES ($cardNO,$employeeNO,$employeename,$nationality,$profession,$DOB,$DOJ,$DOA,$companycode,$sponsorcode,$visatype,$status)"; 
    mysql_query($sql); 
} 
?> 

phpMyAdminのパスワードは "mysqlの" です。

私は、私は次のようなエラーになっていますフォーム送信すると:

「致命的なエラー:不明なエラー:Cで未定義の関数にmysql_connect()の呼び出しを:\ XAMPP \ htdocsに\ test1の\ SQLConnectionProcess.php: 3スタックトレース:3行目のC:\ xampp \ htdocs \ test1 \ SQLConnectionProcess.phpに#0 {main}がスローされる "

助けてください。

+0

使用しているPHPのバージョンは? –

+2

サイドノート:mysql_ *は使用しないでください。準備されたステートメントは非常に安全ですので、mysqliまたはPDOにプリペアドステートメントで切り替えることができます。 – DD77

+1

**危険**:[削除済み](http://php.net/ [obsolete ** database API](http://stackoverflow.com/q/12859942/19068))を使用しています。 manual/en/mysql.php)をPHPから入手してください。 [現代的な代替品](http://php.net/manual/en/mysqlinfo.api.choosing.php)を選択する必要があります。あなたは** [SQLインジェクション攻撃](http://bobby-tables.com/)**に対して脆弱です**現代のAPIは、[防御]を容易にします(http://stackoverflow.com/questions/60174/最良の方法からSQLへのPHPインジェクション)をあなた自身から守ってください。 – Quentin

答えて

2

....ありがとうPDOまたはMySQLiをご利用ください。 MySQLは減価償却されており、このリンクを試してみてください新しいコード

http://php.net/manual/en/function.mysql-query.php

に使用すべきではない、それは私をたくさん助けた:phpdelusions.net/pdoを@あなたの-常識で。

私はこの方法でそれをコーディングします。

1:DB接続ファイル:

<?php 

    $db = new PDO('mysql:host=yourhost;dbname=dbname', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'")); 

    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    ?> 

をごSQLConnectionProcess.phpは次のようになります。

<?php 

require ('path/to/db/con.php'); 

if(isset($_POST['formSubmit'])){ 
     $cardNO   = isset($_POST['cardNO']) ? $_POST['cardNO'] : 0; 
     $employeeNO  = isset($_POST['employeeNO']) ? $_POST['employeeNO'] : 0; 
     $employeename = isset($_POST['employeename']) ? $_POST['employeename'] : ""; 
     $nationality = isset($_POST['nationality']) ? $_POST['nationality'] : ""; 
     $profession  = isset($_POST['profession']) ? $_POST['profession'] : ""; 
     $DOB   = isset($_POST['DOB']) ? $_POST['DOB'] : ""; 
     $DOJ   = isset($_POST['DOJ']) ? $_POST['DOJ'] : ""; 
     $DOA   = isset($_POST['DOA']) ? $_POST['DOA'] : ""; 
     $companycode = isset($_POST['companycode']) ? $_POST['companycode'] : 0; 
     $sponsorcode = isset($_POST['sponsorcode']) ? $_POST['sponsorcode'] : 0; 
     $visatype  = isset($_POST['visatype']) ? $_POST['visatype'] : ""; 
     $status   = isset($_POST['status']) ? $_POST['status'] : ""; 


     $stmt  = $db->prepare("INSERT INTO employee_info 

             (EmployeeCardNO, 
             EmployeeNO, 
             EmployeeName, 
             Nationality, 
             Profession, 
             DOB, 
             DOJ, 
             DOA, 
             CompanyCode, 
             SponsorCode, 
             VisaType, 
             Status) 

             VALUES 

             ($cardNO, 
             $employeeNO, 
             $employeename, 
             $nationality, 
             $profession, 
             $DOB, 
             $DOJ, 
             $DOA, 
             $companycode, 
             $sponsorcode, 
             $visatype, 
             $status)" 

            ); 

     $stmt->execute(); 

     } 
else{ 

    //something went wrong 

} 

?> 

あなたはisset()がたくさんあります条件。いずれかが失敗すると、コード全体が失敗します。 これを出発点として試してください。

ありがとうございました。

+1

これらの入力フィールドのいくつかは、いくつかのパラメータ化を行うことができます。 –

+0

@ cascer1:そうだね。しかし最終的には、それをやり遂げるのではなく、それを手に入れる方法をOPに示すことです。 – MDChaara

関連する問題