[英]PHP MySQL Query to check if record exists or not
我表中有以下数据。
+-------------+---------------+--------------+
| 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,表示该项目已经存在活动...但是在这种情况下没有记录。
如果要添加另一个活动,但又不想在main_unit_id
上main_unit_id
,那么正确的方法是在字段上创建唯一索引(或约束):
create unique index idx_activities_mainunitid on activites(main_unit_id);
如果您尝试插入副本,则插入将失败。
mysql_num_rows
将返回行数,而不是count(*)
结果。
在第一个试验中, count(*)
将在一个行返回1,那么结果将是1。
在第二次测试, count(*)
将在一个行返回0,所以结果仍然是1。
您将需要使用fetch函数来获取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);
注意 :使用的
mysql_*
功能被认为是过时 ,你应该使用的东西,提供了更好的安全性和更多的功能,如库MySQLi或PDO 。
$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{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.