1

私はテーブルを持っています、

id / カテゴリー / エクストラ / アナザー

テーブル内の行に重複エントリがないかチェックしたいと思います。

例えば:

サービス / 配管 / 住宅用

上記は一度しか存在できません。

しかし...

建設 / 配管 / 住居用

上記も存在する可能性があります。

では、3 つのフィールドすべてを 1 つの行で一緒にチェックする必要がありますか?

私のコードは機能しません。

<?php 
// connect here

//

$category = mysql_real_escape_string($_POST['category']);
$extra = mysql_real_escape_string($_POST['extra']);
$another = mysql_real_escape_string($_POST['another']);

$querySTATUS = "SELECT * FROM categories WHERE category ='.$category.' AND extra ='.$extra.' AND another ='.$another'";
$resultSTATUS = mysql_query($querySTATUS) or die(mysql_error());

$CountRows = mysql_num_rows($resultSTATUS);

if($CountRows == 1){
echo "OK";
$query1 = "INSERT INTO categories (category,extra,another) VALUES ( '$category','$extra','$another')";   
$result = mysql_query($query1) or die(mysql_error());
} else {echo "!OK";}exit;?>

明らかにデータを投稿する3つの入力フィールドがあります。

また、フォーム ページでインライン jquery を実行するための応答 OK と !OK があります。

firebug で !OK 応答を取得し続けます。クエリのバリエーションを試しましたが、成功しませんでした。

ご協力いただける場合は、事前によろしくお願いします:-)

ジョン

4

1 に答える 1

1

この SQL クエリは、同じセットのカテゴリ、エクストラ、および別のセットを持つ行の数を示します。WHERE quantity > 1重複のある行だけを取得するようにフィルタリングできます。

SELECT CONCAT(category, extra, another) as catexan, COUNT(*) as quantity, category, extra, another FROM categories GROUP BY catexan ORDER BY quantity DESC;

更新:私はあなたの最初の説明に基づいていました。あなたが提供した詳細に基づいて、これはあなたが探していることをするはずです:

// connect
$category = mysql_real_escape_string($_POST['category']);
$extra = mysql_real_escape_string($_POST['extra']);
$another = mysql_real_escape_string($_POST['another']);

$result = mysql_query("SELECT id FROM categories WHERE category = '$category' AND extra = '$extra' AND another = '$another';");

if (mysql_num_rows($result) > 0) {
  echo '!OK';
} else {
  mysql_query("INSERT INTO categories (category, extra, another) VALUES ('$category', '$extra', '$another');");
  echo 'OK';
}
于 2011-01-13T02:52:08.293 に答える