php + mysql + pearで情報を保存する際の重複を処理する方法。

上記の環境にてrssの情報保存して、過去のエントリーまで表示できるrssリーダーを作っています。

RSSの情報を配列化した$rssShowを下記のようにmysqlに保存するとします。

<?php

require_once("DB.php");
$dsn="mysqli://pearusr:pearpass@localhost/pear";
$db=DB::connect($dsn);

$stt=$db->prepare("INSERT INTO rss_field(channel_title,channel_link,channel_desc) VALUES(?,?,?)");
foreach ($rssShow as $value) {
$result=$db->execute($stt,array($value['channelsTitle'],$value['channelsLink'],$value['channelsDesc']));
}

$db->disconnect();

?>


この形だと読み込むたびに、エントリー情報が重複されていきます。
こういった場合はどのように処理すれば、重複させずにmysqlに保存することができるのでしょうか?

ブログエントリーのURLである$value['channelsLink']をmysqlの情報と重複していないかチェックするような気がしますが、
よくわかりませんでした。
まだ勉強を始めたばかりなので、考え方も間違っていたらご指摘お願いします。
よろしくお願いいたします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2008/01/19 19:20:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:kuakua No.1

回答回数135ベストアンサー獲得回数11

ポイント60pt

初心者ということで簡単にやるには2つ方法があります。(これはとにかく簡単にやるという内容です)

  

(1)prepare-executeではなく、doを使ってSQLを発行しwhere句に複問合せを書き、戻ってきた内容がNULL(IS NULL)の場合にINSERTする。

  

(2)乱暴ですが1発目はとにかくUPDATEで更新を発行してしまい、PHP側でDBIの戻り値を見て失敗している(同じKEYで登録されたデータが無い)場合INSERTで再発行する。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません