:::
tad - 程式開發筆記 | 2011-05-03 | 點閱數: 23579
image

這幾天在寫一個監控的小程式,因為我設計的某個教育系統中有提供嵌入語法,我想知道到底有哪些學校有嵌入我提供的語法,若有些比較不受歡迎的,可以再做調整或修改,順遍也可以觀察一下學校到底用的怎麼樣。

所需的資料庫結構很簡單,只有兩個欄位就可以搞定,分別是「host」用來紀錄來源網站、「counter」紀錄被連線次數,並將 host 設為主鍵。

一開始是用 REPLACE 語法來做,如此,若裡頭沒該 host 資料,那們就會自動新增,若是已經有資料,重複的 host 也會被集中到同一筆資料,這樣才不會佔據太多資料量。

看起來很OK,但實際上,會遇到一個問題,那就是是 counter 無法累積計數。

要解決這種狀況,一般而言,都會先讀取資料庫,看看有無該資料,若無,用 insert 新增;反之,若已有資料,則改用 update 來更新其 counter。

問題是,這樣要做兩次的資料庫存取,沒有一次就可以搞定的方法嗎?有的,這樣寫就行了!

$sql = "INSERT INTO 資料表 (`host` , `counter`) values('$host', 1 ) ON DUPLICATE KEY UPDATE counter = counter + 1 ";

重點就在用顏色標示出來的部份,如此一來,不存在的資料會新增,已存在的資料會更新計數器,而且一行就搞定囉!

:::

搜尋

QR Code 區塊

https%3A%2F%2Fwww.tad0616.net%2Fmodules%2Ftadnews%2Findex.php%3Fnsn%3D193

線上使用者

45人線上 (3人在瀏覽最新消息)

會員: 0

訪客: 45

更多…