【发布时间】: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