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