2016-07-28 6 views
-1

テーブルの2つの異なる列を比較する必要があります:tbl_Try(国、名前)。同じ値を持つ2つのcoloumnsがある場合は何もしません。これらの2つの列に同じ値がない場合、同じインサートが使用されます。MySqlの複数のcoloumnsの比較

これは、データベースへの接続です:

:ここ

 <?php 
     require_once("menu.php"); 
     require_once("function.php"); 

    ?> 

は、メインコード(理解しようとするコメントを読む)

  <?php 
      $conn = ConnectToSql(); 

      $query= "Select * FROM tbl_countries"; 
      $result = mysqli_query($conn, $query) 
      or die("Error in query: ". mysqli_error($conn)); 

      $choose = ''; 

      while ($row = mysqli_fetch_assoc($result)) 
      { 

       $choose .= '<option value = "'.$row['name'].'">'.$row['name'].'</option>'; 
      } 

      ?> 
     <div class="form-group"> 
      <label class="control-label col-sm-2" for="Country">Choose a country:</label> 
      <div class="col-sm-5"> 
       <select class="form-control" name ="reg_country" > 
        <option></option> 
        <?php echo $choose;?></select> 
      </div> 
      </div> 
      <br> 
      <div class="form-group"> 
      <div class="col-sm-offset-4 col-sm-10"> 
      <button type="submit" name="submit" class="btn btn-default">Submit</button> 
      </div> 
     </div> 

      <?php 

      if(isset($_POST['submit'])) 
      { 

       $country = $_POST['reg_country']; 

       $_SESSION['country'] = $country; 




       $query2 = "SELECT name,id FROM tbl_flowertypes "; 
       $result2 = mysqli_query($conn, $query2) or die("Error in query: ". mysqli_error($conn)); 
       $result2_rows = mysqli_num_rows($result2); 


       //this code is not working. Need to count the 2 columns (name AND country) 
       // if in tbl_try there is already country:italy name:12 red roses. DO NOTHING if there is no data the same 
       // insert data 
       $query3 = "SELECT count(*) FROM tbl_try WHERE name='$_SESSION[flower_type_name]' AND country ='$_SESSION[country]' "; 


       $result3 = mysqli_query($conn, $query3) or die("Error in query: ". mysqli_error($conn)); 
       $result3_rows = mysqli_num_rows($result3); 




       // loop counting how many record are in table flowertype and loop to insert data in tbl_try (this code is working fine)  
      for($i = 1; $i <= $result2_rows;$i++) 
       { 



        while($row = mysqli_fetch_assoc($result2)) 
         { 

          $_SESSION['flower_type_name'] = $row['name']; 
         // this is the insertion of the data 
          $inserting = "INSERT INTO tbl_try(name,country) VALUES ('$row[name]','$_SESSION[country]')"; 
          $result3 = mysqli_query($conn, $inserting) or die("Error in query: ". mysqli_error($conn)); 

         } 



       } 
      } 

結果はする必要があります

データベースは一度挿入する必要があります。テーブルに同じ列がない場合のみ。同じデータがあれば何もしません。

レコードを含む表を表示することでこのコードを完成させる必要がありますが、その方法を知っています。

何か提案がありますか?

+1

なぜ、これらの2つの列にユニークなインデックスを追加しないのですか? – Paul

答えて

1

最善の方法は、次のようにDBには、この2列の一意の定義を追加することです:

ALTER TABLE tbl_Try 
ADD UNIQUE (name, country) 

次に、あなたが行ならば、今DBからの結果コードを確認し、結果コードに基づいてすることができます大文字小文字の違いにより、DBに格納されているかどうか、同じ名前と国がすでにDBに格納されていることを示します。

+0

ありがとうございます。私はまだ学生で、経験を得ることを試みているので、何をすべきか正確に教えてください。私は問題は、ユーザーが別の名前を追加する場合、彼は再びすべてのレコードを入力するということだと思いますか? –

+0

私はスニペットによると、より高いと書いてあります。* .sqlスクリプトに追加してMySQLで実行するか、 [phpMyAdmin](https://www.phpmyadmin.net/)を開き、この2つの列をそこでユニークなものとして定義します。 2番目の質問:ユーザーがすべてのレコードを再度入力する必要はありません。それは、ユーザーフォームを作成し、ユーザーからの以前のデータに基づいてフォームデータを事前入力する方法によって異なります。 –

+0

私はphpmyadminを使用しています。だから、私はphpymyadminに行く必要があります、SQLを実行し、変更tblを書く....?私はあなたの時間を無駄にしていることを残念に思っていますが、私は学びたいと思っています:/もし私が学ばない質問をしないならば –

関連する問題