2012-09-20 66 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);