簡體   English   中英

多維數組插入並更新到數據庫中

[英]A multi-dimensional array insert and update into the database

我有一個多選下拉列表框,它為我生成了一個像這樣的數組:

 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']));

我的數據庫結構是:

在此處輸入圖片說明

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

完整的代碼如下所示:

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

更新

我認為在這種情況下,當您需要分別為每一行更改這些列時,最好在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));
}

您必須為每個值動態生成參數占位符

$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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM