2012-12-27 100 views
1

感謝您檢查我的問題。我試圖只更新我的數據庫中的值,如果該字段爲空(所以如果有人試圖註冊一個已準備就緒並且將輸出錯誤消息的地點,現有用戶將不會被覆蓋)。我已經在下面列出了我嘗試過的最新腳本中的2個。第一個腳本用於更新數據庫,如果select語句不在那裏,但會在同一天和同一時間輸入時覆蓋用戶。謝謝大家!更新值只有當空php/mysql

$sql = ("SELECT `player1` FROM `users` where id = '$id' and Times = '$time'"); 


$result = $conn->query($sql); 

if ($result->fetch_assoc === NULL) { 
$update_player = ("UPDATE users SET player1 = '$name' where id = '$id' AND Times = '$time'") 

if($update_player){ 
echo "Date for $name inserted successfully!"; 
} 
} 

else { 
    echo 'That spot is all ready taken!'; 
} 

//2nd script 

$query=mysql_query("UPDATE users SET 
player1 = isNULL (player1, $name) 
where id = '$id' AND Times = '$time'"); 

if($query){ 

echo "Data for $name inserted successfully!"; 
} 

else { 
echo 'That spot is all ready taken!'; 
} 
+0

我想你忘了說你的問題是什麼。順便說一句,使用['pdo'](http://php.net/pdo)或['mysqli_ *'](http://php.net/mysqli)而不是'mysql_ *',因爲最後一個不推薦使用,將來不會得到支持。 – Leri

+0

也許'NULL'信息應該是你查詢中的一個條件。在SQL界面中嘗試一些更深入的測試。 –

回答

2

下面的代碼應該做的伎倆:

$query=mysql_query("UPDATE users SET 
player1='$name' 
where id = '$id' AND Times = '$time' AND player1 IS NULL"); 

if(mysql_affected_rows() == 1){ 
    echo "Data for $name inserted successfully!"; 
} 
else { 
    echo 'That spot is all ready taken!'; 
} 

請注意,您應該使用pdomysqli功能來代替。

+0

非常好,謝謝你! – user1930624

0

試試這個。

while($row = $result->fetch_assoc) { 
    if($row['player1'] == NULL){ 
     $update_player = ("UPDATE users SET player1 = '$name' where id = '$id' AND Times = '$time'") 
    } 
+0

感謝職位Rizon – user1930624