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

标签 php mysql

我对 PHP 和 SQL 查询还很陌生,但学得很快,而且仍然乐在其中! 目前我正在开发一个 Web 应用程序,其中有一个 ±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);
}

谢谢!

最佳答案

您要寻找的东西非常简单。首先,您必须确保您有一个唯一索引(我相信它是 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)

关于php - 在数据库中添加或更新(大)数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28815949/

相关文章:

php - 以 symfony 形式添加链接

php - mysql_query 成功但获取 mysql_fetch_array() 期望参数 1 为资源

php - 如何在 MySQL 中管理 MySQL 连接?

mysql - 在 vb.net 中更新组合框中的值时出现问题

php - 如何在 Laravel eloquent 的子查询中使用 "With"和条件?

PHP:按键对 JSON 数据进行排序

php - Mysqli 多行插入,简单的多插入查询

php - SQL插入无法在PHP中工作

java - 数据库更新时实时重新加载

mysql - 比较当前日期和上个月的日期