我正在尝试编写一个查询,以使用'implode'以有效的方式插入许多值的数组(比如说1000)。这是代码。
$sql = array();
foreach( $return as $key=>$row ) {
$sql[] = '("'.mysql_real_escape_string($row['fullname']).'", '.$row['age'].','.$row['since'].','.'"'.mysql_real_escape_string($row['description']).'")';
}
mysql_query('INSERT INTO data (name, age, since, description) VALUES '.implode(',', $sql));
我的查询将记录数组插入data
表。我想更改查询,以便它将更新记录(如果存在),否则它将插入记录。
答案 0 :(得分:9)
您可能想要的是“ON DUPLICATE KEY”的一个版本,它实际上允许您引用正在输入的数据。
INSERT INTO data (name, age, since, description) VALUES
("Bob", 23, "01-01-1980", "friend"),
("Bill", 33, "03-01-1980", "tall"),
("Jane", 43, "12-01-1980", "thin")
ON DUPLICATE KEY UPDATE age=VALUES(age),
since=VALUES(since),
description=VALUES(description);
希望在阅读时不言自明?
$sql = array();
foreach( $return as $key=>$row ) {
$sql[] = '("'.mysql_real_escape_string($row['fullname']).'", '.$row['age'].','.$row['since'].','.'"'.mysql_real_escape_string($row['description']).'")';
}
mysql_query('INSERT INTO data (name, age, since, description) VALUES '.implode(',', $sql). ' ON DUPLICATE KEY UPDATE age=VALUES(age), since=VALUES(since), description=VALUES(description);');
编辑,将其添加到上面的用户代码中。