看板 PHP 關於我們 聯絡資訊
是這樣的 由於每次跑php都跑很久(或許是寫入的迴圈跑太多) 所以必須把資料防止重複寫進資料庫內 於是我寫了以下程式碼: foreach($_SESSION['statuses']['data'] as $s) { $status_id=$s['id']; /*開始判斷是否有重複資料*/ $sql = "SELECT * FROM `status`where `status_id`='$status_id'"; $result = mysql_query($sql); $row = mysql_fetch_row($result); if($row[status_id]!=$status_id) 開始判斷 { $user_id=$s['from']['id']; $status_message=$s['message']; $status_updated_time=substr($s['updated_time'],0,19); $status_likes_numbers=count($s['likes']['data']); . . . . . } } /*結束判斷是否有重複資料*/ if($dbin) { echo "status資料已寫入"; } else { echo "status寫入失敗"; } } 大概是這樣的防止重複資料寫入 我是利用session的值跟sql主鍵的值判斷後,來決定資料是否要寫入 但是這方法寫好後,php網頁還是跑很慢 於是就在想能不能把判斷寫在迴圈外? 這樣的話就不用一直跑回圈判斷是否寫入,並且加速php讀取速度? 以及可以寫在迴圈外判斷是否寫入的話,該如何撰寫程式碼呢? php新手,請版友們多指教 ps.user單一資料量預估至少上百筆 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.254.179.115
arrack:紅色地方的邏輯好像怪怪的 07/22 00:30
arrack:你應該降低SQL讀取的數量... 07/22 00:31
邏輯的地方是 判斷資料庫主鍵與SESSION是否一致 不知道邏輯有沒有寫錯... 降低SQL讀取數量,我會往這方面去想,謝謝 ※ 編輯: Boston 來自: 111.254.179.115 (07/22 00:33)
guardlan:DB欄位設定唯一值然後利用insert on duplicate update 07/22 00:42
GOOGLE後發現on duplicate update這方法好像適用在MYSQL 但我是用MSSQL >_<
cleanwind:樓上的方法也可以試試看,或許更好! 07/22 00:44
cleanwind:你的 func 是 mysql 的耶 ... 07/22 00:51
看到了...呃 我太迷糊了 之前都在玩MYSQL平台 現在資料是寫在MSSQL內(沒想到居然沒錯誤!?) ※ 編輯: Boston 來自: 111.254.179.115 (07/22 00:56)
arrack:SQL 已經判斷一次了 只要判斷有沒有資料就好了 07/22 12:28