我在表格中有以下数据..
+-------------+---------------+--------------+
| activity_id | activity_name | main_unit_id |
+-------------+---------------+--------------+
| 1 | DEA | 67 |
| 2 | DEB | 68 |
| 3 | DEC | 68 |
| 4 | fasdfsadf | 74 |
+-------------+---------------+--------------+
我想添加另一个活动,但在添加之前我必须确保相同的活动名称不存在针对main_unit_id ... 我写下面的查询,
$SQL_CHECK_ACTIVITY = mysql_query(
"SELECT count(*) FROM activities " .
"WHERE main_unit_id = '67' and activity_name = 'DEA'"
);
$RESULT_SQL_CHECK_ACTIVITY = mysql_num_rows($SQL_CHECK_ACTIVITY);
echo $RESULT_SQL_CHECK_ACTIVITY;
然后打印1表示针对该项目的活动已经存在......
$SQL_CHECK_ACTIVITY = mysql_query(
"SELECT count(*) FROM activities " .
"WHERE main_unit_id = '78' and activity_name = 'afsdaf'"
);
$RESULT_SQL_CHECK_ACTIVITY = mysql_num_rows($SQL_CHECK_ACTIVITY);
echo $RESULT_SQL_CHECK_ACTIVITY;
然后它打印1表示已经存在针对该项目的活动...... 但在这种情况下没有记录......
答案 0 :(得分:2)
如果你想添加另一个活动,但不想在main_unit_id
上重复,那么正确的方法是在该字段上创建一个唯一的索引(或约束):
create unique index idx_activities_mainunitid on activites(main_unit_id);
如果您尝试插入副本,插入将失败。
答案 1 :(得分:2)
mysql_num_rows
将返回行数,而不是count(*)
结果。
在第一个测试中,count(*)
将在一个行中返回1,因此结果将为1.
在第二个测试中,count(*)
将在一个行中返回0,因此结果仍为1。
您需要使用获取功能来获取count(*)
而不是mysql_num_rows
的结果。
修改强>
即。从:
$RESULT_SQL_CHECK_ACTIVITY = mysql_num_rows($SQL_CHECK_ACTIVITY);
要:
list ($RESULT_SQL_CHECK_ACTIVITY) = mysql_fetch_row($SQL_CHECK_ACTIVITY);
答案 2 :(得分:0)
$SQL_CHECK_ACTIVITY = mysql_query("SELECT * FROM activities WHERE main_unit_id = '".$project."' and activity_name = '67' limit 1");
if(mysql_fetch_row($SQL_CHECK_ACTIVITY)) {
echo 'a activity against this project already exists...';
}
else{
}