1

我有一张桌子,

id/类别/额外/另一个

我想检查表中的一行是否有重复条目。

例如:

服务 / 管道 / 住宅

以上只能存在一次。

但...

建筑 / 管道 / 住宅

以上也可以存在。

所以我必须在一行中同时检查所有三个字段?

我的代码不起作用。

<?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;?>

我有一个 3input 字段,显然可以发布数据。

响应 OK 和 !OK 也可以在表单页面上运行一些内联​​ jquery。

我只是在萤火虫中不断得到 !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 回答