台灣最大程式設計社群網站
線上人數
673
 
會員總數:245113
討論主題:189027
歡迎您免費加入會員
討論區列表 >> PHP >> 判別資料庫有無相同編號,如有+1寫入
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
判別資料庫有無相同編號,如有+1寫入
價值 : 50 QP  點閱數:247 回應數:5

樓主

小佑
門外漢
0 14
635 28
發送站內信

捐贈 VP 給 小佑
請問大大:

目前遇到 表單要新增編號,想法是,新的表單上面的編號,會先去搜資料庫裡有無相同的編號
有的話,就+1並存入到資料庫,並在新表單上出現新的編號

小弟有試寫,但會變成無限循環

請大大教導一下~謝謝

<?
//流水號指定變數
$date = $_POST['user'];
//例(ARW20190426-01)

//連線資料庫
$servername = "localhost";
$username = "root";
$password = "12345678";
$dbname = "rework_signing";
// 建立連線
$conn = @new mysqli($servername, $username, $password, $dbname);
// 檢測連線
if ($conn->connect_error) {
die("連線失敗: " . $conn->connect_error);
}
.............(此段該如何添加判別 並丟出結果,給下一筆表單使用)
$sql_detail = "INSERT INTO sample_db ( merge_sn ) VALUES ('$date')";

if ($conn->query($sql_detail) == TRUE ) {
echo "匯入成功";
} else {
echo "匯入失敗" . $sql_detail . "
". $conn->error;
}
//關閉資料庫連線
$conn->close();
?>

搜尋相關Tags的文章: [ 編號新增 ] ,
本篇文章發表於2019-04-26 17:42
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

小魚
檢舉此回應
通常編號會有固定的格式,
用字串篩選的方式只取最後的數字的部分,
轉成數字之後再做+1的動作.
本篇文章回覆於2019-04-26 23:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

小魚
檢舉此回應
https://www.1keydata.com/tw/sql/sql-substring.html
本篇文章回覆於2019-04-26 23:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
1.請善用程式標簽一下
2.請注意不要將安全性帳密的程式碼給po出。就算只是本機測試或無實體帳密。養成習慣改掉。

最後回答你的問題。大多數來說如果有特規條件的流水編號。
也就是不是單純數字的流水號的情況。一般會有兩種做法

其一:新增資料前檢查筆數。
優點是程式碼比較單純,缺點是比較容易增加效能,且也有機會發生重覆號碼(很低的機率)

其二:序號判斷法:
每一次產生序號就檢查有無重覆。此比較適合無規則性的序號。對你不太適合。

其三:編號記錄式:
另開一張表,記錄前碼與後碼的對應性。前碼就是你的特別代碼。後碼就是你的流水號。
新增時直接取其號碼,並做+1的動作。
一般我會比較建議使用這樣的方式。雖然他的缺點是程式碼比較麻煩一些。
且又得額外佔用一些記錄。
但他的效能比較好,且重覆性也不會發生。
本篇文章回覆於2019-04-28 04:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小魚
檢舉此回應
原來還有這樣的方法,
不過其實我一直在想個問題,
萬一兩個人同時下訂單,
會不會出現兩筆同樣的訂單編號,
如果用主鍵唯一鍵讓他回傳錯誤感覺使用者體驗不好,
如果用第三種方式馬上加一筆是不是就可以避免這種情況了?
不過就有可能出現跳號的情況(抓了編號沒寫進去),
不過跳號總是比錯誤好吧,
是這樣子嗎?
本篇文章回覆於2019-04-28 09:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

小佑
捐贈 VP 給 小佑 檢舉此回應
版主:
謝謝提醒,以後PO文詢問,我會特別注意~謝謝
版主您提供的方法,我再試試~感謝

小魚:
謝謝提供方法,也是很好的方式~謝謝您
本篇文章回覆於2019-04-28 20:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.