2011-11-15 12 views
0

私はニュース記事を投稿しています。私は時々同じものを二度追加し、これを避けたいと思う。だから私は最初に 'title'というフィールドに一致するものがあるかどうかを確認するためにinsertステートメントを変更して、私が提出しようとしているレコードのタイトルと等しいかどうかを調べることができますか?php =挿入は動作していますが、既に1つのフィールドに基づいているかどうかを確認したい場合

私はPHPの初心者ですから、私が使ったPHPコードですが、タイトル=タイトルをチェックし、それを追加する方法を知らない場合は追加しますそれは一致を見つけません:

$result = mysql_query(" 
insert into news (
    catalogid, 
    title, 
    intro, 
    content, 
    viewnum, 
    adddate, 
    rating, 
    ratenum, 
    source, 
    sourceurl, 
    isdisplay, 
    isfeature, 
    subip, 
    vsent, 
    timesubmitted) 
values    
    ('1', 
    '$title', 
    '$intro', 
    '$content', 
    '0', 
    '$subdate', 
    '$source', 
    '$icheck', 
    'N/A', 
    '$sourceurl', 
    '$isapp', 
    '0', 
    '127.0.0.1', 
    '0', 
    '$tsdate')" 
); 

ありがとう!

+2

一意にしたいフィールドに「UNIQUE」キーを設定します。 – Brad

答えて

2

on duplicate key updateのようなデータベース固有のテクニックがありますが、通常は、selectを介して同じキーを持つレコードの存在をテストします。レコードが存在する場合は、update新しいデータで、それ以外の場合はinsert新しいレコード。あなたが好きな、挿入する前にチェックするクエリを実行することができます

1

$sql = mysql_query("SELECT catalogid from news WHERE title='".$yourTitle."'"); 
if(mysql_num_rows($sql) < 1) { 
    //add your insert query here 
} 

希望あなたがで、単一のINSERT文でこれを行うことはできません

-1
$result = mysql_query("SELECT * FROM news WHERE `title`=$title"); 
if (!$result) 
{ 
    // your code INSERT 
    $result = mysql_query(" 
insert into news (
    catalogid, 
    title, 
    intro, 
    content, 
    viewnum, 
    adddate, 
    rating, 
    ratenum, 
    source, 
    sourceurl, 
    isdisplay, 
    isfeature, 
    subip, 
    vsent, 
    timesubmitted) 
values    
    ('1', 
    '$title', 
    '$intro', 
    '$content', 
    '0', 
    '$subdate', 
    '$source', 
    '$icheck', 
    'N/A', 
    '$sourceurl', 
    '$isapp', 
    '0', 
    '127.0.0.1', 
    '0', 
    '$tsdate')" 
); 

}

-1

を支援少なくとも直接的ではない。データベーステーブルのタイトルフィールドをUNIQUEに設定すると、MySQLが重複したタイトルのレコードを挿入するのを防ぐことができます。 mysql_query関数がFALSEを返すかどうかを検出する必要があります。そうであれば、重複したレコードが挿入されていることを知っていますが、これを処理することはできますが、合っています。

関連する問題