我是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);
}
谢谢!
答案 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)