看板 PHP 關於我們 聯絡資訊
基本上這只是舉例... 可見您沒去思考 陣列唷.... 對單筆資料來說 其實連 for 或是 foreach 都不用寫的... 當您設定 選核方塊為 陣列時 假設您選了 唱歌 畫畫 當您送出後 php 已經產生了 request 與 post 陣列如下 Array ( [q] => Array ( [0] => 唱歌 [1] => 跳舞 ) ) 那您在 插入資料庫後 能直接寫成 $sql = " insert into xxx set 興趣1 = '".$_REQUEST['q']['0']."', 興趣2 = '".$_REQUEST['q']['1']."', 興趣3 = '".$_REQUEST['q']['2']."', .................................ETC "; 另外 sql 除錯的部份 您可以 把sql echo 出來 先別急著 mysql_query 然後把您產生的 echo 出來的 sql 輸入資料庫後 看看錯誤在那了 phpmyadmin 應該 有裝吧 @@ ※ 引述《sun1988 (風)》之銘言: : 感謝你的教法,可我試過了,我顯示一直錯誤 : 這是選核取方塊部份 : <input type="checkbox" name="q[]" value="唱歌"> : <input type="checkbox" name="q[]" value="跳舞"> : <input type="checkbox" name="q[]" value="畫畫"> : 如果我想的沒錯 : $size = sizeof('q'); <=這裡應該是這樣? : for($i=0 ; $i<$size ; $i++) : { : $SQL = "insert into chkb set ckb1 = '".q[$i]."'"; <=這裡應該是這樣? : } : 因為我這樣子弄完顯錯誤是 : Parse error: syntax error, unexpected '[' in C:\AppServ\www\q2.php on line 19 : 而第19行就是$SQL 這一段 : ※ 引述《clubflymf (clubfly)》之銘言: : : 若您是使用 陣列 存值的話 : : for 跟 foreach 都可以使用 : : 也可以存入 1-3 的 : : 兩著差在一個用變數去比對 : : 一個是用key去比對 : : 舉個例子 : : 若您將興趣的值 用array接收 : : 如下 : : <input type="checkbox" name="ins[]" value="唱歌"> : : <input type="checkbox" name="ins[]" value="跳舞"> : : <input type="checkbox" name="ins[]" value="畫畫"> : : 送出資料後 : : 會有一個array產生 $_request 印出來看看 來$_post 也可以 : : $size = sizeof(? ); //自己動手找答案了...XD : : for ($i =0 ; $i<$size ; $i++){ : : $SQL = "INSERT INTO XXX : : SET XXX=".array[$i]."'' : : ............... "; : : } : : foreach ($array AS $KEY=> $val ){ : : $SQL = "insert into XXX : : SET XXX='".$val['0'] ." ' : : ....................... "; : : } : : 把php 的array 當 tree 來看 : : 一個門牌一個值 應該很好懂的 ^ 0 ^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.116.173
appleboy46 :insert into set ? 06/10 09:38
kylekai :Sql 語法好像有錯?... 06/10 09:46
insert into 表單名稱 set 欄位1 = "值1", 欄位2 = "值2" 跟 insert into 表單名稱('欄位1','欄位2') values('值1','值2') 兩者都可以使用 差別在於 用set 時 沒設定的欄位 會直接為資料庫 default 使用 原始的 table field 跟 values 若有少打發生錯誤時 會直接中斷 而 set 只是不更新 欄位 valus 用法 欄位一多 不好檢查 大概是這個樣子 ※ 編輯: clubflymf 來自: 114.32.116.173 (06/10 10:08)
clubflymf :補充一點 MYSQL 3.22.10 以後才支持 SET的用法 @@ 06/10 10:16
kylekai :受教了.. 最近都寫 function 自動array=>sql.. :p .. 06/10 10:18
clubflymf :直接把ARRAY MAP 過去SET 就可以不用FUNCTION了 ^^ 06/10 10:27
dspswen :有學有推 06/10 10:33
kylekai :不懂你的意思.我都是 insert('tablename',$data); 06/10 13:02
kylekai :function 裡面應該就是你說 array map to set,insert 06/10 13:02
appleboy46 :我也都是用 kylekai 說的方式下去撰寫 06/10 13:50
appleboy46 :不管是 insert 或者是 update 都是如此 06/10 13:50
哈...我說的MAP 應該說 就直接 對陣列資料處理 XD PHP的 ARRAY 蠻有趣的 只要有 KEY 就能對應相對的值 所以就可以少寫涵式嚕 一個 FOR 或 FOREACH 就能處理了 ^^ ※ 編輯: clubflymf 來自: 114.32.116.173 (06/10 15:33)
kylekai :函式內也是foreach, 另外加上 escape 等吧. 06/10 15:54
kylekai :我想我跟 appleboy 都不喜歡主程式一堆foreach... 06/10 15:54
kylekai :所以才會把那些一直重複的foreach處理包function. 06/10 15:54
kylekai :anyway ..既然是一樣的..就不用多說了..:) 06/10 15:55
shadowjohn :重覆性太高的工作都用function :D 06/10 17:01
shadowjohn :分頁﹑表格﹑DB to array﹑array to DB﹑... ... 06/10 17:02
sun1988 :P謝各位的教學 我懂了 06/11 20:41