Kimlik else Ekle varsa satır güncellemek

5 Cevap php

Bu bir. Php dosyası kodudur. Sütun "memberid" benzersiz bir dizin vardır. Bir kullanıcı varolan memberid ile bir rekor girdiğinde, rekor, yeni bir satır oluşturulur başka güncelleştirilmiş almak gerekir.

Ben de bir uyarı kutusu göstermek istiyorum. Test amaçlı aşağıda yol gibi eklenen, ancak ateş değildir. Hiçbir mesajı görüntülenir.

Ben de otomatik ekleme / güncelleştirme işlemek için doğru bir yaklaşım olup olmadığını bilmek istiyorum?

<META http-equiv="refresh" content="2; URL=socialprofile.html">
<?php
error_reporting(E_ALL ^ E_NOTICE);
require_once("../Lib/dbaccess.php");

    //Retrieve values from Input Form
    $CandidateID = $_POST["inCandidate"];
    $SocialProfile = $_POST["inActivities"];

    $InsertQuery = "INSERT INTO candidate_db_social (memberid, socialactivities, lastupdated) VALUES (".$CandidateID.",'".$SocialProfile."',now())";
    $UpdateQuery = "UPDATE candidate_db_social SET socialactivities='".$SocialProfile."', lastupdated=now() WHERE memberid=".$CandidateID;
    try
    {
        $Result = dbaccess::InsertRecord($InsertQuery); 
    }
    catch(exception $ex)
    {
        $Result = dbaccess::InsertRecord($UpdateQuery);
        echo "<script type='text/javascript'>alert('".$ex."');</script>";
    }
?>

5 Cevap

MySQL REPLACE anahtar . It works exactly like INSERT Bak, ama birincil anahtar dayalı mevcut kayıtlarını yazar. Bir UPDATE tarafından izlenen bir INSERT, çalışıyor tam olarak eşdeğer değildir, çünkü olsa ayrıntılar kadar okuyun.

INSERT ... ON DUPLICATE yerine ihtiyacınız olabilir. Tetikleyiciler veya yabancı anahtarlar ile durumlar akla geliyor. Ancak uzun sözdizimi :)

Sen YİNELENEN KEY maddesinde ON MySQL kullanmanız gerekir:

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

Ayrıca DEĞİŞTİR bkz:

http://dev.mysql.com/doc/refman/5.0/en/replace.html

Eğer gibi, INSERT ... ON DUPLICATE KEY UPDATE sözdizimi kullanabilirsiniz:

insert into t values ('a', 'b', 'c') on duplicate key
  update a='a', b='b', c='c'

mysql kullanmak

INSERT INTO table VALUES() 
                       ON duplicate KEY UPDATE ..; 

Örnek:

http://www.mysqlperformanceblog.com/2006/05/29/insert-on-duplicate-key-update-and-summary-counters/

Ben genellikle sadece (duruma göre) $ _POST veya $ _GET diziden birinden bir kayıt kimlik değerinin varlığını kontrol edin. Bir değeri vardır ve sayısal ise, ilgili kimliği ile satır güncelleştirme girişimi; değilse bir INSERT sorgusu gerçekleştirin.