我需要插入或更新多个同名但ID不同的行。。下面是一个示例表
order | event_name | event_id | sport_id
1 | EPL | 46 | 1
2 | EPL | 47 | 1
3 | EPL | 48 | 1
4 | ISL | 59 | 1
上表在三行上显示了相同的事件名称epl,但具有不同的事件id。。我需要根据不同的事件\u id插入或更新它们,但它会触发事件\u name上的重复条目。
$sql = "SELECT event_name FROM dbs_events where event_id = '$event_id '";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$sql = "UPDATE dbs_events SET event_name = '$event_name', sport_id = '$sport_id' WHERE event_id = '$event_id' ";
} else {
$sql = "INSERT INTO dbs_events (event_id, event_name, sport_id, event_sort_order) VALUES ('$event_id', '$event_name', '$sport_id', '$event_sort_order')";
}
在这种情况下,重复密钥更新或最后一次\u insert \u id()似乎不起作用,因为我需要插入预定义值而不是增量值。
1条答案
按热度按时间zy1mlcev1#
表中的引号之间有一个额外的空格
Where
你的身体状况Select
查询:'$event_id '
. 这会导致查询不返回结果,即使$event_id
确实存在。这就是为什么,你的if
条件总是试图做一个Insert
,导致重复输入错误。把这当作开始使用准备好的语句的一个教训。此外,您的查询会受到sql注入相关的攻击。
请尝试以下操作(使用准备好的语句):