選択したランダム ユーザーが既に勝者テーブルにある場合、ループ バックして別のランダム ユーザーを選択するには、次のコードが必要です。
以下のコードは機能しますが、勝者のテーブルに既に存在するユーザーをランダムに選択すると、再試行されません。いくつかの方法を試しましたが、うまくいく解決策が見つかりませんでした。
前もって感謝します。(これはスタックオーバーフローに関する私の最初の質問です。プロトコルに従わなかった場合は、簡単にお願いします)
<?php
$host="localhost";
$user_name="db_user";
$pwd="db_pass";
$database_name="db_name";
$db=mysql_connect($host, $user_name, $pwd);
if (mysql_error() > "") print mysql_error() . "<br>";
mysql_select_db($database_name, $db);
if (mysql_error() > "") print mysql_error() . "<br>";
$sqlCommand = "SELECT userid, firstname, surname, email FROM users ORDER BY RAND() LIMIT 1";
$query = mysql_query($sqlCommand) or die (mysql_error());
while ($row = mysql_fetch_array($query)) {
$userid = $row["userid"];
$firstname = $row["firstname"];
$surname = $row["surname"];
$email = $row["email"];
$checkuserid = mysql_query("SELECT userid from winners WHERE userid=$userid");
if (mysql_num_rows($checkuserid)==0) {
$sqlCommand = "INSERT into winners (userid, firstname, surname, email) values ('" . $userid ."','" . $firstname . "', '" . $surname . "', '" . $email . "')";
mysql_query($sqlCommand) or die (mysql_error());
} else {
}
}
mysql_close();
header("Location: http://mysite.com"); /* Redirect browser */
exit();
?>