2012-09-20 63 views
0

我有多個選擇下拉框,產生了我一個這樣的數組:多維數組插入和更新到數據庫

array(3) { [0]=> string(1) "1" [1]=> string(1) "6" [2]=> string(1) "7" } 

我不能工作是如何獲得多個選擇降下拉框以插入更新並從數據庫中選擇或選擇。我似乎只能是越來越一個值

我當前的代碼的情況是這樣 - >什麼上面var_dump是:

SELECT * FROM {table} WHERE canid=? AND categoryid=?", array($emailCheck['id'], $fields['Occupation'][0])); 

更新語句:我怎麼會破滅嗎?

UPDATE {table} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array($emailCheck['id'], implode(',', $fields['Occupation'])); 

我的數據庫結構是:

enter image description here

+0

這取決於你的數據庫模式。我建議你發佈。 –

+0

@JasonMcCreary完成,但仍無法確定有關更新/插入語句 –

回答

1

,如果我理解正確,$fields['Occupation']包含多個選擇的值從下拉列表中,然後用AND categoryid IN (?),並使用implode數組合併成字符串像這樣:implode(',', $fields['Occupation'])

完整的代碼如下所示:

myFunction("SELECT * FROM {table} WHERE canid=? AND categoryid IN (?)", array($emailCheck['id'], implode(',', $fields['Occupation']))); 

UPDATE

我認爲在這種情況下,當你需要單獨更改這些列的每一行,倒不如循環遍歷PHP數組,並單獨的查詢:

for($i=0; $i<count($fields['Occupation']); $i++) { 
    $id = $fields['Occupation'][$i]; 
    // here make query like before 
    myFunction("UPDATE {table} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array($emailCheck['id'], $id)); 
} 
+0

謝謝你,我會怎麼做我的更新/插入語句?我已經更新了我的問題與我的更新語句,我得到http://d.pr/i/Y5y7 –

+0

這取決於你想要什麼更新/插入語句來完成,我的意思是什麼值應設置爲'犬科動物=? ,categoryid =?'。對不起,遲到的回覆 – haynar

+0

沒問題,我不好,所以我爲什麼掙扎。通過數據庫給出的犬科動物=這個工作正常,但如果貓ID被發現,用戶可以ID然後做任何重新輸入這些信息,但是更新所有我做的基本上是說。如果can id沒有找到,然後插入。我需要一個canid catid每行 –

0

你必須動態地生成參數佔位符,每個值

$params = array_merge(array($emailCheck['id']), $fields['Occupation']); 
$catPlaceholders = '?'.str_repeat(',?',count($fields['Occupation'])-1); 

myFunction("SELECT * FROM {table} WHERE canid=? AND categoryid IN (" 
     .$catPlaceholders.")", $params);