我正在尝试在我的 mySQL 数据库中存储一对多关系,并且我希望尽可能避免重复条目。
我在互联网上阅读并看到“ON DUPLICATE KEY UPDATE”是一个选项。这对我的情况有用吗?
代码:
function insert_options($uid, $array) {
if(!is_array($array)) {
return false;
}
$db = db_connect();
foreach($array as $a) {
$sql = 'INSERT INTO newsletter_coupon_codes_options (uid, option_name, value) VALUES (?, ?, ?)';
$stmt = $db->prepare($sql);
if($stmt === false) {
echo "Prepare failed: (" . $db->errno . ") " . $db->error;
}
$stmt->bind_param('iss', $uid, $a, $value);
$value = '1';
$stmt->execute();
}
}
桌子
UID(INT11), OPTION_NAME(varchar(255)), VALUE(INT(11))
我试图添加ON DUPLICATE KEY UPDATE value = 1
到$sql
声明中,但它似乎没有做任何事情。基本上我想确保当我插入数据时,如果uid
andoption_name
存在,它只是设置value
to1
并且不会创建新条目。
我没有设置唯一键,只有一个主键uid
。我不确定要做什么独特。我无法做到uid
唯一,因为每个uid
. 我也无法使option_name
唯一的,因为多个选项名称将相同uid
唯一的,因为多个's
实现这一目标的最佳方法是什么?