2016-03-22 8 views
3

多くの異なるコードを試しましたが、まだMySQLテーブルには挿入されません。ここで私がこれまで持っているものです。PHPを使用してMySQLテーブルに値が挿入されていません

は、ここに私のテーブル構造です:

here's my table structure

成功

が、中に挿入されることになっていないデータを挿入

succeed but no data in my query

HTMLフォームMySQLテーブル:

<td><form method="post" action="daftar.php"> 
    <label for="textfield2">ID Pekerja:</label><br> 
    <input type="text" name="textfield2" id="textfield2"> 
    <br/> 
    <label for="textfield2">Nama:</label><br> 
    <input type="text" name="textfield" id="textfield"> 
    <br/> 
    <label for="textfield2">Unit:</label><br> 
    <input type="text" name="textfield2" id="textfield2"> 
    <br/> 
    <label for="textfield2">Password:</label><br> 
    <input type="text" name="textfield2" id="textfield2"> 
    <br/> 
    <label for="textfield2">Nombor Telefon:</label><br> 
    <input type="text" name="textfield2" id="textfield2"> 
    <br/> 
    </center> 
</div> 
</form>&nbsp;</td> 
+0

エラーメッセージの任意の並べ替えを参照していますか? –

+0

[mysqli-connect](http://php.net/manual/en/function.mysqli-connect.php)を参照し、接続が正しく確立されているかどうか、また印刷エラー –

+0

@DarwinvonCoraxにエラーメッセージがないかどうかを確認してください。結果はmysqlテーブルには表示されませんでした。 –

答えて

0

構文を再確認する必要があります。私は上記の構文に従うことをお勧めしたい

INSERT INTO table_name (column1, column2, column3,...) 
VALUES (value1, value2, value3,...) 

は、この従ってください。

また、データベーステーブルフィールドのデータタイプを確認してください。

これが役に立ちます。

平和! xDさん

+0

既存の構文の何が問題になっているのですか? –

0

は、あなたのHTMLフォームのコード<入力のname属性の

値を確認してください>タグは、POST変数

すなわち

<input type="text" 
name="textfield2"
id="textfield2"> 

として使用する必要があります
+0

投稿変数をチェックしますか?それは? –

1

210は、すなわち$_POST['nama'] dosen'tも存在している間、この

$insert_sql = "INSERT INTO daftar(add column names here)VALUES('$_POST[ID]','$_POST[name]','$_POST[Unit]','$_POST[Password]',$_POST[Telefon])"; 
+0

私は試しました。このエラーが発生しましたParse error:構文エラー、予期しない ''(T_ENCAPSED_AND_WHITESPACE)、予期している ']' –

+0

ID PekerjaはIDにのみ変更します –

+1

クエリでフィルタリングされていないpostvaluesを使用することはありません。あなたのアプリケーションは、あらゆる形のSQLインジェクションのために広く開かれます。 – DKSan

0

はあなたがあなたのforminput共有しているため、同じname属性をデータベースにNULL値を追加してみてください。電話の場合は、+などの文字を除き、ユーザー入力がintであることを確認してください。

フォームは次のようになります。

<td><form method="post" action="daftar.php"> 
    <label for="textfield2">ID Pekerja:</label><br> 
    <input type="text" name="id" id="textfield2"> 
    <br/> 
    <label for="textfield2">Nama:</label><br> 
    <input type="text" name="nama" id="textfield"> 
    <br/> 
    <label for="textfield2">Unit:</label><br> 
    <input type="text" name="Unit" id="textfield2"> 
    <br/> 
    <label for="textfield2">Password:</label><br> 
    <input type="text" name="Password" id="textfield2"> 
    <br/> 
    <label for="textfield2">Nombor Telefon:</label><br> 
    <input type="text" name="Telefon" id="textfield2"> 
    <br/> 
    </center> 
</div> 
</form>&nbsp;</td> 

をあなたはIDための入力を持っているのはなぜですか。それは確かに必要ではなく、単独で放置され、単独で増加することが推奨される。

ベストプラクティスを使用してください。必要なすべての列とその値を列挙します。すなわち

INSERT INTO daftar(nama, unit, pass, tel)VALUES('$_POST[name]','$_POST[Unit]','$_POST[Password]',$_POST[Telefon]) 

また、コードにはSQLインジェクションが有効です。これを避けるには、準備文を使用してください。あなたは空の値を持つにもかかわらず、より多くのあなたのデータはあなたのテーブルに挿入されたばかりhere

3

(あなたのスクリーンショットがあることを示す)を学ぶことができます。これは、入力値が正しくないためです。

まず正しいHTMLフィールド名のPHPスクリプトで必要とされる:

<td> 
    <form method="post" action="daftar.php"> 
    <label for="textfield2">Nama:</label><br> 
    <input type="text" name="nama" id="name"> 
    <br/> 
    <label for="textfield2">Unit:</label><br> 
    <input type="text" name="Unit" id="Unit"> 
    <br/> 
    <label for="textfield2">Password:</label><br> 
    <input type="text" name="Password" id="Password"> 
    <br/> 
    <label for="textfield2">Nombor Telefon:</label><br> 
    <input type="text" name="Telefon" id="Telefon"> 
    <br/> 
    </form> 
</td> 

が続いてフォーム送信後にユーザが提出したデータを検証します。すべてのフィールドにテーブル構造ごとの値が設定されていることを確認してください。すべてのフィールドに値が必要です。

$nama = @$_POST["nama"]; 
$unit = @$_POST["Unit"]; 
$pass = @$_POST["Password"]; 

/* casting to make sure integer value for this field(Telefon) */ 
$tel = (int) @$_POST["Telefon"]; 

/* validate data submitted by user */ 
$hasError = false; 
$error = ''; 
if(empty($nama)){ 
    $error .= 'nama field required.'; 
    $hasError = true; 
} 
if(empty($unit)){ 
    $error .= 'unit field required.'; 
    $hasError = true; 
} 
if(empty($pass)){ 
    $error .= 'password field required.'; 
    $hasError = true; 
} 
if(empty($tel)){ 
    $error .= 'Telefon field required.'; 
    $hasError = true; 
} 

/* after data validation check that can we insert data or not */ 
if($hasError){ 
    /* notify user that this field is required. */ 
    die($error); 
}else{ 
    /* here we go user inserted data as required */ 

    /* connect to db */ 
    $con = mysqli_connect("localhost", "root", "", "jpn") or die("Cannot connect to server." . mysqli_error($con)); 

    $insert_sql = "INSERT INTO daftar VALUES(NULL, ?, ?, ?, ?)"; 
    if($stmt = mysqli_prepare($con, $insert_sql)){ 
    mysqli_stmt_bind_param($stmt, "sssi", $nama, $unit, $pass, $tel); 
    mysqli_stmt_execute($stmt); 

    if(mysqli_affected_rows($con)){ 
     echo "Succesfully insert new data."; 
    }else{ 
     echo "Error in inserting new data" . mysqli_error($con); 
    } 
    }else{ 
    die("Error in inserting data due to" . mysqli_error($con)); 
    } 
} 

Read more about SQL injection and for prepared statement to prevent this

+0

これ!これは質問への答えです。 –

+0

@SalmanA「テレフォンフィールド」の整数値を確かめるためにキャストを使用しました。 – itzmukeshy7

+0

@ itzmukeshy7うん、うん。申し訳ありませんが、私はそれに気付かなかった。 –

0

入力タイプEXのためのポスト名.USE名にあなたが間違っている:コード以下

使用:このような何かを検証します。 input type = "text" name = "id" id = "textfield2"次に入力タイプの使用後名前$ idkerja = @ $ _ POST ["id"];

関連する問題