Doğru / yanlış mysql tablo eklemek veya güncelleştirmek için bir php fonksiyonu

4 Cevap php

Bu yüzden, eğer, eklemek, satır güncellemek eğer, bir kullanıcı bir tablo var olup olmadığını kontrol eden bir fonksiyon yazmaya çalışıyorum Im.

İşte benim fonksiyonudur:

    	function UserExists($screenname){
    		$mysql = mysql_fetch_array ( mysql_query("SELECT * FROM `users` WHERE `screenname` = '$screenname' "));
    			if($mysql){
    				return TRUE;
    			}else{
    				return FALSE;
    			}
}

Ve şu kullanarak bu işlevi yürütme im:

if(UserExists($user)){
mysql_query("UPDATE `users` SET  `token` =  '$token' ,  `secret` =  '$secret'  WHERE `screenname` = '$user' ");
}else{
mysql_query("INSERT INTO `users` (`screenname`, `token`, `secret`) VALUES ('$user', '$token', '$secret')");
}

Onun hataları atma değil, aynı zamanda masa güncelleme değil, bir şey yapmıyorum.

4 Cevap

Sadece tek bir sorgu ile bu işi yapmak için INSERT ... ON DUPLICATE KEY UPDATE ... MySQL query syntax bakmak isterdim.

INSERT INTO users (screenname, token, secret) VALUES ('screenname', 'token', 'secret')
ON DUPLICATE KEY UPDATE token = 'token', secret = 'secret'

screenname muhtemelen şu anda yok olan eşsiz (ya da birincil anahtar) olması gerekir. Ben veritabanı tablosundaki bir kimlik sütun eklemek ve veritabanı satır başvurmak için kullanabilirsiniz öneririm.

Aramalar ne alıyorsanız hata görmek için sonra mysql_error arayın. Ayrıca başka bir iyi hata ayıklama tekniği gibi mysqlfront veya myphpadmin gibi bir mysql istemcisi kullanarak sunucu üzerinde çalıştırmak için

JoostK belirtildiği gibi en iyi çözüm YİNELENEN KEY ON

Ben sadece bu durumda REPLACE INTO SET col = val kullanmak öneririm, yapmanız gereken tüm tabloda benzersiz bir dizin tanımlamaktır.

Bir satır zaten bir yenisini eklemek olmaz eğer, mevcut güncelleyecek varsa Replace Command, benzersiz endekslerinde bir göz atacağız.

Aynasız