台灣最大程式設計社群網站
線上人數
1455
 
會員總數:245895
討論主題:189493
歡迎您免費加入會員
討論區列表 >> PHP >> 三種欄位綜合到一欄位 寫入資料庫
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
三種欄位綜合到一欄位 寫入資料庫
價值 : 10 QP  點閱數:735 回應數:12
樓主

mypetertw
門外漢
0 97
925 145
發送站內信

想請問一下 我有三個欄位
mm dd time
send後能把它into到mysql的d欄位
d的值就會是「mm月dd日 time」

$sql = "INSERT INTO `` (`d`) value ('$_POST[mm]月,$_POST[dd]日,$_POST[time]')“;
我的想像是這樣
這是可行的嗎?

搜尋相關Tags的文章: [ mysql ] ,
本篇文章發表於2016-01-13 12:13
1樓
不錯的參考

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
可不可行~~~
可以先試看看啊?

不過基本上,我是不會存那些中文字。只會單純存數值進去而已
而且正規來說。其實可以就直接存一個全部時間的欄位就好了。
反正資料撈出來再做分開。或是下sql命令分開也行。

實在沒必要存成三個欄位。
本篇文章回覆於2016-01-13 14:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不錯的參考

彩虹
檢舉此回應
你要將mm dd time三個值,存到d欄位是可以

提醒您:
1.如果要再雙引號裡面使用變數含有[]符號時
盡量外層加上大括弧 {},比較不會造成問題且好辨別
2.$_POST[mm],mm也盡量使用雙引號括起來,變成$_POST["mm"]

整體調整如下:
本篇文章回覆於2016-01-13 16:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

mypetertw
檢舉此回應
我問錯了∼
我發現我的需求是SET
本篇文章回覆於2016-01-13 16:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

彩虹
檢舉此回應
那你的完整需求是什麼呢
本篇文章回覆於2016-01-13 16:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

mypetertw
檢舉此回應
一樣是要將mm dd time三欄位的值set到d欄位
只是怎麼寫都不對...
本篇文章回覆於2016-01-13 17:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

皮皮快跑
檢舉此回應
你想用set是為了將來方便find_in_set()使用吧!
而如果你要的set是「不定值的」當然你直接存成「mm,dd,time」的時間格式就好了。
不過因為是不定值,你的欄位建議用varchar而不是用set
用set你就得給他規定set的項目名稱。
可問題星空也說了,這樣要嘛不如直接存成unix time要不就乾脆存成datetime再去比較就好了。
不太需要搞一些奇奇怪怪的方式給自己找麻煩。
跟時間有關的處理模式統一用相同的方法來處理就不會有麻煩事。
本篇文章回覆於2016-01-13 22:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
那你是要新增資料還是更新資料呢???

基本上來說,在mysql內的合併字串函數是concat(請自行去查看該函數的應用方式)
不過一般來說,我會在php內結合好參數就直接儲存一個欄位。不會在mysql內下語法合併。

所以.....
或許你可以用一個範例來說明你要的東西吧!!並加強你的sql語法的應用。
本篇文章回覆於2016-01-14 09:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

mypetertw
檢舉此回應
$sql2 = "UPDATE ``.`` SET `d` = '".$mm."".$dd."".$time."' ";
我是用這樣子來做∼
只是我遇到一個問題
我有用substr去顯示我要顯示d的某一段字串
但我發現他的中文字代表3 這是對的嗎?雖然看起來沒問題
假設02月03日 08:30 AM

這樣能顯示02
但若+3後

就會顯示02月
如果是+2
就會出現亂碼
本篇文章回覆於2016-01-14 10:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
最有價值解答

皮皮快跑
檢舉此回應
雖然整個覺得你的sql和你要的功能面的東西處理起來怪怪的。
而且你沒有很清楚的說明你的「需求」到底是什麼。
而且很明顯你對於日期格式的處理這方面經驗不足。
事實上我前面講過,#星空 大已經告訴你存成純時間格式的好處了。
因為後續你取出資料不管你要怎麼呈現都可以使用date()函式來處理你的格式化需求。
而不是在這邊一直花時間糾結在字串要怎麼處理。

另外就是關於字串處理的部份,substr()只適用於純英文和數字。
但如果摻雜其他國家文字你就要考慮清楚編碼及所佔的位元數的問題。
你可以參考mb_substr()這個函式。

本篇文章回覆於2016-01-14 10:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

mypetertw
檢舉此回應
恩感謝各位大大∼
我知道那些方法
只是我是另有需求 才會用這樣的方法做∼
本篇文章回覆於2016-01-14 11:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
不要用substr
用正則來判斷比較快。

以下的程式碼給你參考


這樣就不用擔心字碼位數不同的問題。
不過實在搞不明白,有什麼特殊需求會需要分開儲存。
就算將其直接存成時間格式。要拉出來也可以各別下條件。

實在沒那個必要分開儲存。
當然,你高興就好。這部份只是給你參考
本篇文章回覆於2016-01-14 14:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

mypetertw
檢舉此回應
感謝版主
又學到一招!
本篇文章回覆於2016-01-22 11:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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