【问题标题】:php mysql array data insert if not exists else updatephp mysql数组数据如果不存在则插入否则更新
【发布时间】:2015-02-13 00:32:08
【问题描述】:

我正在尝试将数组数据插入或更新到 mysql 数据库中。

我的数组看起来像

Array
(
    [0] => Array
        (
            [R_ID] => 32
            [email] => a@a.com
            [name] => Bob
        )

    [1] => Array
        (
            [R_ID] => 32
            [email] => b@b.com
            [name] => Dan
        )

    [2] => Array
        (
            [R_ID] => 32
            [email] => c@c.com
            [name] => Paul
        )

    [3] => Array
        (
            [R_ID] => 35
            [email] => d@d.com
            [name] => Mike
        )  
)

我正在使用此代码将数据插入 mysql 数据库。

if(is_array($EMailArr)){

    $sql = "INSERT INTO email_list (R_ID, EMAIL, NAME) values ";

    $valuesArr = array();
    foreach($EMailArr as $row){

        $R_ID = (int) $row['R_ID'];
        $email = mysql_real_escape_string( $row['email'] );
        $name = mysql_real_escape_string( $row['name'] );

        $valuesArr[] = "('$R_ID', '$email', '$name')";
    }

    $sql .= implode(',', $valuesArr);

    mysql_query($sql) or exit(mysql_error()); 
}

但我希望如果数组 R_ID 值与任何行 R_ID 值匹配,则查询更新现有值,否则查询插入新行。

我不明白我该怎么做。

【问题讨论】:

  • 我首先不使用 mysql_* 函数,它们已被弃用。使用 PDO 重写,这是一种更好的数据库抽象层。为了回答你的问题,我想我会在数据库上运行一个查询来查看记录是否存在,如果它更新它,如果它没有插入它。 php.net/pdo
  • 我要郁闷了...我是否总是必须在每个问题上问:What is the problem? What have you tried so far?
  • 使用 MySQL INSERT....ON DUPLICATE: dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

标签: php mysql arrays


【解决方案1】:

当键已经存在时,您可以使用 INSERTON DUPLICATE KEY UPDATE 来更新表记录。

请参阅link 了解详细信息和语法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 2016-12-10
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    相关资源
    最近更新 更多