2015-02-12 6 views
0

Я пытаюсь вставить или обновить данные массива в базу данных mysql.php mysql массив вставить данные, если не существует else update

мой массив выглядеть

Array 
(
    [0] => Array 
     (
      [R_ID] => 32 
      [email] => [email protected] 
      [name] => Bob 
     ) 

    [1] => Array 
     (
      [R_ID] => 32 
      [email] => [email protected] 
      [name] => Dan 
     ) 

    [2] => Array 
     (
      [R_ID] => 32 
      [email] => [email protected] 
      [name] => Paul 
     ) 

    [3] => Array 
     (
      [R_ID] => 35 
      [email] => [email protected] 
      [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 строки, то запрос обновить существующее значение в противном случае запрос вставить новую строку.

Я не могу понять, как я могу это сделать.

+1

Я бы начать не используя mysql_ * функции, они устарели. Перепишите с помощью PDO, это лучший способ абстракции db. Чтобы ответить на ваш вопрос, я предполагаю, что я запустил бы запрос на db, чтобы увидеть, существует ли запись, если она обновляет ее, если она не вставляет ее. http://php.net/pdo – Halfstop

+0

Я собираюсь подавить ... Я всегда должен спрашивать: «В чем проблема? Что вы пробовали до сих пор? "На каждый вопрос? – bcesars

+0

Использование MySQL INSERT .... ON DUPLICATE: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – mrunion

ответ

0

Вы можете использовать INSERT с дублированием KEY UPDATE для обновления записей таблицы, когда ключ уже существует.

см это link для деталей и синтаксиса

Смежные вопросы