2016-03-31 9 views
0

PHP/MySqlの新機能 - 一部の文字列を格納するデータベースを作成しようとしています。ユーザーに挿入を知らせる方法はありますか...更新エントリを複製しますか?

すべて正常に動作します - 私のフォームには3つのユーザーエントリがあります:classkeywordsusrstringこれは問題なくデータベースに追加されています。しかし

2つの問題、:

#1)これは私が使用しているMySQLの機能である:classkeywordsの両方が行と一致した場合にのみ

$sql = "INSERT INTO `reporting` (class, keywords, usrtext) VALUES (\"$class\", \"$keywords\", \"$usrtext\") ON DUPLICATE KEY UPDATE `usrtext` = \"$usrtext\" "; 

をしかし、私はduplicate key updateをしたいです。 ORインスタンスではなく、classまたはkeywordsのいずれかが一致すると、行が更新されます。これはANDインスタンスを実現する正しい構文ですか?

#2、私は次のようにバックメインインデックスページへの再指示Ajaxのポストを介してフォームデータを送信しています:

$("#formdata").submit(function(e) { 

    var url = "posted.php"; // the script where you handle the form input. 
    e.preventDefault(); // avoid to execute the actual submit of the form. 

    $.ajax({ 
      type: "POST", 
      url: url, 
      data: $("#formdata").serialize(), // serializes the form's elements. 
      success: function(data) 
      { 
      window.location.href = 'index.php?=successfullyadded'; 
      alert(data) ; 
      $("#formdata")[0].reset(); // reset form and clear all hidden inputs 

     } 
     }); 

}); 

私はアラートを作成するプロセスを中断することができますどのように/元のフォームページにプロンプ​​トを表示して、ユーザーに重複したエントリが通知され、キャンセルするエントリを更新し続けるオプションが与えられます(入力が完了する前にclassまたはkeywordsを変更する機会を与えます)。

+0

** WARNING **:あなただけのPHPを学習している場合は、http://php.net/manual/en/function.mysql-query([ 'mysql_query']時代遅れを習得しないでください.php)インターフェイス。それはひどいので、PHP 7では削除されました。[PDOは学ぶのが難しくありません](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo- for database-access /)、[PHP The Right Way](http://www.phptherightway.com/)のようなガイドはベストプラクティスの説明に役立ちます。 **あなたのユーザーパラメータが[正しくエスケープされている](http://bobby-tables.com/php)か、重大な[SQLインジェクションバグ](http://bobby-tables.com/ )。 – tadman

+0

複合キー(クラス、キーワード)はありますか? (もちろん正規化された環境では、キーワードと呼ばれる列はありません) – Strawberry

+0

@tadman - 警告と参考に感謝します。私は本当に 'mysqli'を使用しています。文字のエスケープ入力を適切にスクラブすることについて読んでいます(多くの人が文字エスケープでは不十分であることを暗示しているようです)。これまでは、物事を安全に保つためにxampp localhost環境でしか練習していませんでした。 – user1837608

答えて

0

私のコードは、ユーザーがすでに登録されているメール。電子メールが重複しているときに警告する。

$ sql = mysql_query( "SELECT * FROM admin WHERE email = '$ Email'"); $ numrow = mysql_num_rows($ sql);

 if($numrow > 0){ 


     echo '<script type="text/javascript">alert("That Email is already exits !!Try another Email"); 
     history.back();</script>'; 

     } 
     else{ 

      $staffInsert_sql = mysql_query("Insert Into admin(name,gender,password,confirmpw,email,address,reg_date) 
       VALUES ('$Name','$gender','$password','$confirmpw','$Email','$Address',now() 
       )"); 
      if ($staffInsert_sql) { 
       echo "<script language=\"javascript\"> alert('Save Successfully One Record');</script>"; 
       header("location:success_register.php"); 
      } 
     } 
関連する問題