我們公司正在創建(非常活躍)註冊表格。處理這些數據的應用程序是Laravel 5應用程序。我正試圖消除註冊處理腳本中的所有不必要的查詢。但是請注意,它是甚至更重要我們正確記錄每個註冊。
現在,我寫了這個到應用程序流:
$entry_timestamp = time();
DB::table('form_registration_data')->insert($userDataArray);
$matchArray = array('last_name' => $last_name, 'entry_timestamp' => $entry_timestamp);// the (required field last_name/unix entry_timestamp) pair is (safely IMO) assumed to be a unique "ID"
$sql = DB::table('form_registration_data')->select('entry_id')->where($matchArray)->first();
if (!empty($sql)) {
//from this point script knows user data was recorded properly
} else {
$errorMsg = 'There was a problem with the server. Please try again.";
}
我之所以寫了一個單獨的選擇查詢我不是100%一定的,只是因爲插入查詢沒有失敗這個手段它正確執行和數據被正確地記錄在DB(請記住,這是最重要的方面)
換句話說,這就是爲什麼我沒有寫這樣的劇本:
$sql = DB::table('form_registration_data')->insert($userDataArray);
if ($sql) {
//was the data truly recorded properly - 100% guaranteed ???
} else {
$errorMsg = 'There was a problem with the server. Please try again.";
}
我太過分了嗎?換句話說,插入查詢GUARANTEE的非失敗是否在DB中記錄了正確的數據?
爲什麼不嘗試獲取它的基礎上'LAST_INSERT_ID()',看看它是否在那裏,以確保?如果它沒有失敗它可能成功了,但是不能保證別的東西沒有刪除它,或者將來不會刪除它。編程充滿了不確定性。 – tadman
同意,如果您使用ORM併爲該變量分配要保存的值。您可以使用$ data-> id來檢查保存。如果id不在那裏,它不會保存。 – arcee123
@tadman真實 - 但問題集中在腳本執行的時候 - 而不是未來的刪除。該腳本的其他部分沒有任何刪除功能 –