2012-04-24 7 views
1

は私が diid 列を持つテーブル疾患diseasenamedescrptionを持って働いていません。MySQLのINSERTクエリは、<strong>HCP</strong>と呼ばれるデータベースに、

HTMLフォームから簡単に入力します。ここまでは私のコードです。提出後

<html><head><title>Disease Inssert</title></head> 
<body> 
<form action="diseaselist.php" method="post"> 
Disease Name : <input type="text" name="txtDiseaseName" id="textbox" /><br /> 
Description : <input type="text" name="txtDiseaseDescription" id="textbox" /><br /> 
<input type="submit" name="btnDiseaseSubmit" id="button"/> 

</form> 
</body> 
</html> 

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("hcp"); 

if($_REQUEST['btnDiseaseSubmit']) 
{ 
$queryDiseaseInsert="INSERT INTO disease (`diseasename` ,`description`) VALUES ('".$_REQUEST['txtDiseaseName']."', '".$_REQUEST['txtDiseaseDescription']."');"; 

$resultDI=mysql_query($queryDiseaseInsert) or die(mysql_error()); 
} 
?> 

、ページがdiseaselist.phpにリダイレクトされますが、データはデータベースに保存されていません。

誰でも私のクエリに間違いが見えることはありますか?

+0

はい少なくとも1つのことが間違っています:あなたの入力データは適切に消毒されていません。詳しくはhttp://php.net/filterのフィルタ拡張をご覧ください。 – Hajo

+1

これはdiseaselist.phpのコードですか? – heyanshukla

+0

挿入する前に文字列変数をエスケープする必要があります –

答えて

2

フォームは直接リスト<form action="diseaselist.php" method="post"> に送信しています。 データベースへのコードの保存は決して実行されません。

あなたがのがprocess.phpがデータベースに追加するためのコードを含む言わせて、中間ページを作成することができます。

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("hcp"); 

if($_REQUEST['btnDiseaseSubmit']) 
{ 
    $queryDiseaseInsert="INSERT INTO disease (`diseasename` ,`description`) VALUES ('". mysql_real_escape_string($_REQUEST['txtDiseaseName'])."', '".mysql_real_escape_string($_REQUEST['txtDiseaseDescription'])."');"; 

    $resultDI=mysql_query($queryDiseaseInsert) or die(mysql_error()); 
    // insert is complete, redirect to list 
    header("location: diseaselist.php"); 
} else { 
    // the form was not submitted 
    // redirect back to the form or show error message 
} 

?> 

変更:

  • は、ヘッダ命令を送って、挿入後
  • をmysql_real_escape_stringの追加ブラウザをリストにリダイレクトする

今、あなたの現在のファイルで、HTMLコードのみを残し、process.phpスクリプトにフォームを送信するaction属性を更新:

<html><head><title>Disease Inssert</title></head> 
<body> 
<form action="process.php" method="post"> 
Disease Name : <input type="text" name="txtDiseaseName" id="textbox" /><br /> 
Description : <input type="text" name="txtDiseaseDescription" id="textbox" /><br /> 
<input type="submit" name="btnDiseaseSubmit" id="button"/> 

</form> 
</body> 
</html> 

変更:

  • process.phpにフォームaction属性を更新diseaselist.phpページの
+0

私は変更を加えました。 C:\ wamp \ www \ HCP \ insertdisease.phpの行にすでに送信されたヘッダ情報(C:\ wamp \ www \ HCP \ insertdisease.php:3で開始された出力)を変更することはできません13 " –

+0

エラーは、' header'関数が呼び出されたときにすでに何かが印刷されている(エコーした)ことを意味します。 PHPコードがファイルの先頭にあることを確認し、 'header'関数を呼び出す前に何も出力しないでください –

+0

ありがとうMAZZUCCI :) –

0

次のコード

てみてください
<?php 

    mysql_connect("localhost", "root", ""); 
mysql_select_db("hcp"); 

if (isset ($_REQUEST['btnDiseaseSubmit'])) { 
    $queryDiseaseInsert = "INSERT INTO disease ('diseasename' , 'description') VALUES('" . $_REQUEST['txtDiseaseName'] . "','" . $_REQUEST['txtDiseaseDescription'] . "')"; 

    $resultDI = mysql_query($queryDiseaseInsert) or die(mysql_error()); 
} 
?> 
+0

誰がdiseaselist.phpにもisnt型を言うのですか? – Shane

+0

decoyerはページが1つであり、同じページであることを言及していませんでした。diseaselist.php。それではisset()コードは残りのものを扱います@Shane – Poonam

+0

十分に公正です。私のコメントでは、コードが同じファイルにあると仮定しています。これは、OPが行っているようです。 – Shane

2

スクリプトにはいくつか問題があります。まず、挿入しようとする前にデータをチェックしていないことです。 HTMLフォームの一般的な流れは次のとおりです。

  1. 表示フォーム。ユーザーがデータを入力して送信します。
  2. データは、必要なすべてのデータをチェックする必要があるサーバーに送信されます。表示されていない場合、ユーザーは通常、エラーのあるフォームを受信します。
  3. これは、ユーザーが完全に有効なフォームを提出または提出するまで続きます。

は、今すぐあなたの形で、ここで、上記の言った:

<?php 

    $mysql = mysql_connect("localhost","root",""); // assign to variable 
    mysql_select_db("hcp", $mysql); 

    // Get into the habit of using $_POST and $_GET instead of $_REQUEST 
    if(isset($_POST['btnDiseaseSubmit']) && !empty($_POST['btnDiseaseSubmit'])) 
    { // Form was completely submitted 
    $sql = "INSERT INTO disease (`diseasename` ,`description`) VALUES ('".$_POST['txtDiseaseName']."', '".$_POST['txtDiseaseDescription']."');"; // No need for massive variable names 

    $resultDI = mysql_query($sql, $mysql) or die(mysql_error()); 

    mysql_close($mysql); // Close database connection - cleans things up 
    echo "Successfolly ran database query!"; 
    } else { // Form was not completely submitted, if at all - display form. 
?> 
<html> 
    <head><title>Disease Inssert</title></head> 
    <body> 
    <!-- If action is not present, the form will submit to the current page. ie. If current page is a.php and we leave out action, the form will submit to a.php! --> 
    <form method="post"> 
     Disease Name : <input type="text" name="txtDiseaseName" id="textbox" /><br /> 
     Description : <input type="text" name="txtDiseaseDescription" id="textbox" /><br /> 
     <input type="submit" name="btnDiseaseSubmit" id="button"/> 
    </form> 
    </body> 
</html> 
<?php 
    } 
?> 

があなたのために正常に動作する必要があること。私が何をしたのか、なぜ私がそれをしたのかを知るために、コードのコメントを書き留めておいてください。より多くの例についてはGoogleを参照してください。すぐに皆さんに明白になるでしょう。

関連する問題