我对 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/