0

私はこれを以下で使用しています。IDの重複は防げますか?

コード:

$new_generating_id= プロセス ページでは、プロセス ページが処理されるたびに新しい ID が生成されます。

  $sql = "select `Message_id` from `queries_sent` 
  where message_id='$new_generating_id'";
  $query = mysql_query($sql) or die ("Error: ".mysql_error());

  while ($row = mysql_fetch_array($query)){

$storedid = $row['Message_id'];


  }
  mysql_free_result($query);

  if ( $new_generating_id == $storedid ) {
echo("An error occured.");
    die('');
   } else {
echo('');
   }

それをいじって動作するかどうかを確認するために、既知の変数を使用してテストしました。

存在するIDに変更$new_generating_idし、データベースがそれをプルするとエラーメッセージが表示されました。皆さんはどう思いますか?

4

2 に答える 2

1

識別のためにタイムスタンプ値を使用してみてください。送信されたトランザクションごとに一意です。最も単純な形式は次のとおりです。

$id='myid'.time();

ここでは、文字列myidを使用し、それを (関数からの) タイムスタンプ値と連結していtime()ます。この値をデータベースに保存し、操作を実行します。

于 2011-11-28T18:11:54.927 に答える
0

Message_idフィールドに一意の文字列を挿入する場合は、最初にテーブルでMessage_idを一意としてマークします。次に、このコードのようなものを使用して、そのテーブルに新しいIDを挿入できます。

do {
    $uniqueId = md5(uniqid(mt_rand(), true));
    mysql_query("INSERT INTO queries_sent (Message_id) VALUES ('$uniqueId')");
} while (mysql_errno() == 1062);
于 2011-11-28T18:24:43.093 に答える