Mysql查询 - 如果一行中存在三个值?

时间:2011-01-13 02:44:32

标签: mysql mysql-num-rows

我有一张桌子,

id / category / extra / another

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

例如:

服务/管道/住宅

以上只能存在一次。

但是...

建筑/管道/住宅

以上也可以存在。

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

我的代码无法使用。

<?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输入字段,显然会发布数据。

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

我一直在接受!在萤火虫中做出反应,我尝试了查询的各种变化,但没有成功。

如果您能提供帮助,请提前感谢您: - )

约翰

1 个答案:

答案 0 :(得分:1)

此SQL查询将显示有多少行具有相同的category,extra和另一组。您可以过滤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';
}