[英]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.