繁体   English   中英

PHP MySQL查询以检查记录是否存在

[英]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_idmain_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_*功能被认为是过时 ,你应该使用的东西,提供了更好的安全性和更多的功能,如库MySQLiPDO

$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM