0

Web サイトのサインアップ シート システムを作成しています。各サインアップ シートには、ID 番号が与えられます。ユーザーがサインアップすると、ユーザー名と ID 番号がデータベースに送信されます。ただし、重複したエントリを停止して、同じユーザーがイベントに 1 回しかサインアップできないようにしたいと考えています。SQL クエリで WHERE ステートメントを使用できません。これに取り組む最善の方法は何かと考えていました。1 つのイベントにしかサインアップできないか、1 つのイベントしかサインアップできないため、主キーまたは一意のキーを使用できません。前もって感謝します。

これはページのコードです

<?php
session_start();

$user = $_POST['username'];
$id = $_POST['id'];

if(empty($user) == FALSE )
{

$con=mysqli_connect("localhost","emuas","flgdls","EMUAS_signUp");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$sql="INSERT INTO SIGN_UP_TEST (EventID, User, Comments)
VALUES
('$_POST[id]','$_SESSION[username]','$_POST[comments]')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
  header("Location: {$_SERVER['HTTP_REFERER']}");
  }
  else
  {
  header("Location: {$_SERVER['HTTP_REFERER']}");
  }
?>
4

2 に答える 2

0

複合主キー (id とユーザー) を使用すると、ユーザーは複数のイベントにサインアップできますが、同じイベントを 2 回登録することはできません。

主キー (id、ユーザー)

于 2013-05-23T17:09:32.677 に答える
0

この UNIQUE キーを追加できます。ユーザーが各イベントに 1 回だけサインアップできるようにします。

alter table SIGN_UP_TEST add unique index(EventID, User);

于 2013-05-23T17:02:59.630 に答える