如何用多维数组更新mysql-tabel


how to update mysql tabel with a multidimensional array

我有一个多维数组att,我想通过UPDATE语句插入MySQL。但我只希望在数组中的entry_id与DB中的entry.id匹配时更新它。如果与值匹配​​从数组中,它必须更新。

这是我的多维数组,名为values

Array ( 
[0] => Array ( [entry_id] => 41149 [o_number] => 000001 [test1] => 000001 [test2] => 1234 [lev] => Ja [fak] => Mail [beta] => 30 [test] => 4 ) 
[1] => Array ( [entry_id] => 41142 [o_number] => 000202[test1] => 000202 [test2] => 1234 [lev] => Ja [fak] => Mail [beta] => 30 [test] => 4 ) 
[2] => Array ( [entry_id] => 41103 [o_number] => 000003 [test1] => 000003 [test2] => 1234 [lev] => Ja [fak] => Mail [beta] => 30 [test] => 4 ) 
[3] => Array ( [entry_id] => 41101 [o_number] => 000044 [test1] => 000044 [test2] => 1234 [lev] => Ja [fak] => Manuel/brev [beta] => 10 [test] => 2 ) 
[4] => Array ( [entry_id] => 41100 [o_number] => 000542 [test1] => 000542 [test2] => 1234 [lev] => Ja [fak] => Mail [beta] => 30 [test] => 4 ))

这是我的数据库字段,我想更新。

o_number     test1     test2     lev     fak     beta

这就是我的数据库现在的样子

title           entry_id     o_number     test1     test2     lev     fak     beta
Rest Soya       41149           
Cafe Bella      41142        
Danglette       41103

这是我的代码,介绍如何通过维度数组进行迭代,然后更新mySQL。但我只想更新,如果entry_id匹配的话。

所以问题是,当我有一个多维数组时,如何更新表?我试过这种方式,但还没有决定测试它,因为我不想插入任何错误。有没有更好、更有效的方法来做到这一点?

foreach ($values as $key) 
{
        $sql_update = "UPDATE exp_channel_data set 
        o_number =$key['o_number'],
        lev ='$key['lev']',
        fak =$key['fak'],
        beta =$key['beta'],
        test1 =$key['test1'],
        test2 =$key['test2']
        where entry_id = '$entry_id"
        $this->EE->db->query($sql_update);
}

这是我在DB 中想要的输出

title                   entry_id     o_number     test1     test2     lev     fak     beta
Rest Soya               41149        000001       000001    1234      Ja      Mail    30
Cafe Bella              41142        000202       000202    1234      Ja      Mail    30
Danglette               41103        000003       000003    1234      Ja      Mail    30

将数组引用插入字符串时,必须用{}将值括起来,或者在数组索引周围省略引号。您还忘记使用数组引用来获取entry_id,并且它周围的引号不匹配

foreach ($values as $key) 
{
        $sql_update = "UPDATE exp_channel_data set 
        o_number ={$key['o_number']},
        lev ='{$key['lev']}',
        fak ='{$key['fak']}',
        beta ={$key['beta']},
        test1 ={$key['test1']},
        test2 ={$key['test2']}
        where entry_id = '{$key['entry_id']}'";
        $this->EE->db->query($sql_update);
}

我不知道你在用什么MySQL API。与其插入字符串,不如使用参数化查询。如果您使用的是mysqli或PDO,则应该修复db类以允许这样做。