說下思路:
福貢網(wǎng)站建設公司創(chuàng)新互聯(lián),福貢網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為福貢上千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的福貢做網(wǎng)站的公司定做!
1. 將生成的數(shù)字保存到mysql數(shù)據(jù)庫,然后每次生成的號碼不能與數(shù)據(jù)庫的數(shù)字重復,請問怎么弄?
先讀取數(shù)據(jù)庫已存在的數(shù)字,將結(jié)果以數(shù)組格式,與rand(1,1000)的數(shù)組相比較計算差集,去除這部分數(shù)字(array_diff),再shuffle,得到新的隨機數(shù)。
我覺得,你完全可以建立一個序號表,比如,1-1000,每次用時先用隨機函數(shù)?。?-數(shù)據(jù)記錄數(shù))個數(shù)值,再用這個數(shù)值取得相應的記錄,當取出之后,刪除這個記錄,這樣保證記錄總數(shù)一直會減少且數(shù)字也不會重復。
2. 有沒有什么辦法生成的時候先生成一位數(shù)的,一位數(shù)生成滿了以后再生出兩位數(shù)的,兩位數(shù)滿了然后再三位數(shù)的,以此類推?
先獲取一位數(shù)的記錄,再從中隨機抽取一個,如果數(shù)據(jù)庫中沒有找到一位數(shù)的,就遞增一位數(shù),直到找到為止。
3. 代碼的執(zhí)行效率希望能越高越好!
如果想要代碼執(zhí)行效率,最好盡量減少與數(shù)據(jù)庫的交互。
這個問題首先是你自己設計導致的,想要避免也得改變你的設計,比如一種方式:可以將“直接在瀏覽器里輸入success.php”設計為不能直接訪問,以下是其中的兩個實現(xiàn)方式。
1.將success.php放到一個不能直接訪問的web路徑下,在apache中.htacess可以控制訪問。
2.控制可以自己來實現(xiàn),設定一個參數(shù),如果沒有該參數(shù)則表示不能訪問。
不知道是不是你想要的。
每次進入提交的頁面,給一個session,為了避免重復,session的key可以是隨機的。
在表單填寫頁面
?php
session_start(); // 啟用session
$time = time();
$key = 'sess_' . $time; // 根據(jù)時間生成一個隨機的session key
$_SESSION[$key] = $time; // 設置session的值
?
!--{通過隱藏表單將 session 的 key傳遞到服務端處理}--
input type="hidden" name="session_key" value="?php echo $time;?" /
處理頁面
?php
session_start(); // 啟用session
$key = $_POST['session_key'];
if(!$key || $_SESSION[$key] != substr($key, 5)){
// 如果沒有傳 session_key 參數(shù)
// 或者 session_key 參數(shù)值截斷 sess_后的數(shù)字 與 session參數(shù)值不匹配
unset($_SESSION[$key]); // 刪除 session 值
// 然后考慮是否要提示錯誤,或者轉(zhuǎn)入另一個頁面
exit(); // 終止頁面代碼執(zhí)行
}
// 下面進行數(shù)據(jù)寫操作
// 數(shù)據(jù)操作完成后,刪除session
unset($_SESSION[$key]);
// 后續(xù)操作
?
$########################
一個頁面也是一樣的,我給你的只是一個思維,
具體如何實現(xiàn),你要根據(jù)自己的實際情況去處理
很多東西都不是通用的
另外,不管多少個頁面,必然包含兩個部分,一部分是表單填寫,一部分是數(shù)據(jù)處理,這個跟多少個頁面無關~~就看你是否能夠理解這段代碼的意義,如果不理解的話,嵌套進去也沒啥用,能夠理解的話,或許你能夠找出更適合自己的解決方案
確保不重復的情況下 給這個鍵做索引 或者 在匹配步驟上將數(shù)據(jù)庫的所有數(shù)值分批次取出存入到緩存中 利用高IO去完成匹配。
另外 關于 7位數(shù)字的生成 可以以1000000為基礎去自增的形式生成。按照你的隨機數(shù)理念 越到后面count的效率越低。
將關于mysql函數(shù)?全部改成mssql前綴
$sqlwhere?=?"select?*?from?$dbzh?where?……";//具體哪些字段重復,在where后面加上條件即可
$result?=?mssql_query($sqlwhere);
$num?=?mssql_num_rows($result);?
if?($num??==?0){
//新增操作
}
只要查詢它的ID是否存在,如果存在的話,就重復了,如果不存在的話,就說明沒重復
mssql_get_last_message?函數(shù)是做什么用的
你可以這樣,你有一張ip_code表格,你加一個字段為state,你每次取的時候把state標為1,而沒取得為0,那么每次拿都是去拿為0的。
分享文章:php并發(fā)不重復數(shù)據(jù)庫 mysql并發(fā)防止重復數(shù)據(jù)
當前網(wǎng)址:http://jinyejixie.com/article34/hehepe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站改版、品牌網(wǎng)站制作、靜態(tài)網(wǎng)站、用戶體驗、自適應網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)