【问题标题】:how to update mysql tabel with a multidimensional array如何使用多维数组更新mysql表
【发布时间】:2013-09-02 22:44:56
【问题描述】:

我有一个多维数组 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);
}

这是我在数据库中想要的输出

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

【问题讨论】:

  • 这是正确的做法,除非你有很多引用问题。

标签: php mysql multidimensional-array sql-update


【解决方案1】:

当您将数组引用插入到字符串中时,您必须用{} 将值括起来,或者省略数组索引周围的引号。您还忘记使用数组引用来获取 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 类以允许这样做。

【讨论】:

  • 我在$key['fak'] 周围添加了引号,因为它是一个字符串。
  • 还是一样的@Barmar
  • 有什么错误吗?确保您启用了错误报告。如果你使用mysqlmysqli,检查查询调用的返回值是否成功,如果成功则调用mysql_error()打印错误信息。
  • 它确实有效,我只是看错了地方 :) 再次感谢 :)
猜你喜欢
  • 2014-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 2016-05-25
  • 1970-01-01
相关资源
最近更新 更多