簡體   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