在数据库中添加或更新(大)数组值

时间:2015-03-02 17:31:26

标签: php mysql

我是PHP和SQL查询的新手,但学习速度快,仍然享受它! 目前我正在开发一个网络应用程序,我有一个±1700值的数组,我想存储在数据库中。我设法让它只是添加它们(见下面的代码),但问题是,它们也需要更新。值可以更改,并添加新值。 这是一个php脚本,它将作为一个cron作业运行,以保持数据库的更新。

我知道我必须使用'... ON DUPLICATE KEY UPDATE ...'但我不知道如何在我的SQL查询中实现它。

这是我的代码:

$db = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password, array(
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
));

$sql = 'INSERT INTO advertisers_tbl (advertisers_id, advertisers_name) VALUES ';
$insertQuery = array();
$insertData = array();

foreach ($advertisers as $row) {
    $insertQuery[] = '(?, ?)';
    $insertData[] = $row['id'];
    $insertData[] = $row['name'];
}

if (!empty($insertQuery)) {
    $sql .= implode(', ', $insertQuery);
    $stmt = $db->prepare($sql);
    $stmt->execute($insertData);
}

谢谢!

1 个答案:

答案 0 :(得分:0)

你所寻求的很简单。首先,你必须确保你有一个独特的索引(我相信它是advertisers_id)。

其次,您需要一个类似的查询:

INSERT INTO advertisers_tbl (advertisers_id, advertisers_name) 
VALUES (a_id1, a_n1), (a_id2, a_n2) 
ON DUPLICATE KEY UPDATE 
advertisers_id=VALUES(advertisers_id), 
advertisers_name=VALUES(advertisers_name)