我真的需要這方面的幫助。我試圖做一個基於uisng的情況下的MySQL更新,但我不認爲我得到它的權利。 這是我想要實現的。 我有以下字段基於case語句更新mysql數據庫
user_id, rank, weekly, monthly, justwinners
1 9 0 0 0
2 29 0 0 0
3 8 0 0 0
4 10 0 0 0
5 12 0 0 0
什麼我想要實現的是更新根據特定的日期,每週,每月和justwinners領域 可以說我有2011年5月7日開始日期的表。 $ startdate = 5-07-2011; 在2011年12月7日的一週結束時,我想將最高排名的用戶的每週字段更新爲1.同時,將最高排名的下一個3用戶的justwinners 字段更新爲1 。 在現在是19/07/2011的第二週結束時,我想更新最高級別用戶的每週字段,其值仍然爲'0'到2,並更新 justwinners字段,其值仍然'0'到2. 這將繼續,直到我達到一個月的時間,當我將更新每月的領域。 這是我已經能夠拿出迄今爲止不工作。
//Initiate the database connection here
function get_db_conn() {
$conn = mysql_connect(HOST, DB_USER, DB_PASSWORD) or die('Could not Connect!');
mysql_select_db(DATABASE, $conn) or die ('could not connect to database');
return $conn;
}
function updateWinners($limit, $field) {
$conn = get_db_conn();
switch($field) {
case "weekly" :
$limit = 1;
case "monthly" :
$limit = 1 ;
case "giftpack" :
$limit = 10 ;
default:
$limit = 1 ;
}
$sqlquery = "SELECT * FROM application rank DESC " ;
$sqlquery .= " where $field < 1 ";
$sqlquery .= " LIMIT $limit ";
$result = mysql_query($sqlquery);
$user_data = mysql_fetch_row($result);
if(isset($user_data)) {
$user_data = 0 ;
while($user_data){
$uid = $user_data(user_id);
$rank = $user_data(rank);
$query = "INSERT INTO application_winners (user_id, rank, date) VALUES ('$uid', '$rank' 'now()')";
mysql_query($query) or die('Error, insert winners query failed');
switch ($action) {
case "weekly":
$startdate = "5-07-2011";
$sqlquery = "UPDATE application SET weekly = CASE
WHEN (CURDATE() = (startdate * 7))
THEN weekly = '1'
WHEN (CURDATE() = (startdate * 14))
THEN weekly = '2'
WHEN (CURDATE() = (startdate * 30))
THEN weekly = '3'
ELSE weekly
END";
}
$user_data = $user_data + 1;
} //endwhile
}
else {
echo "Error in updating the winners";
}
}
如果你知道任何更好的實現方法。請分享。
是的,沒有任何地方的行動,其實我真的不知道我DOI在這些代碼行中。我只需要幫助如何最好地實現我的系統,而不必看我迄今爲止所做的。 – stanley