php - 如何用多维数组更新mysql表

标签 php mysql multidimensional-array sql-update

我有一个多维数组 att,我想通过 UPDATE 语句插入到 MySQL 中。但我只希望在数组中的 entry_id 与数据库中的 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);
}

这是我想要的数据库输出

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 类以允许这样做。

关于php - 如何用多维数组更新mysql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18581712/

相关文章:

php - MySQL 总是覆盖现有的数据库条目(UPDATE、REPLACE、INSERT ????)

Mysql查询帮助显示小于给定日期的结果

ios - 如何创建二维数组 Objective C

c - 多维数组 - fscanf

php - 选择数据库中具有多个实例的用户

php - 如何将值从pHp服务器脚本返回到NSMutableData( objective-c ,iOS)

mysql - 对 2 个表的查询进行计数

mysql - 使用左连接的 SQL 查询出现问题

PHP通过特定键过滤二维数组

php - 在数据库中插入图像属性