gpt4 book ai didi

php - 如果不存在则插入新行并获取新的或现有的 id

转载 作者:行者123 更新时间:2023-11-30 23:10:07 27 4
gpt4 key购买 nike

我想通过一个代码使用 NOT EXISTSlast_insert_id() 来执行以下操作。下面的代码满足了我的需求,Col1 是那里的唯一键,因为如果数据已经存在,代码将不会插入数据。如果插入新行或已存在新行,则总是代码返回相关行的 $id

<?php 
mysql_query(" INSERT table SET col1='data1', col2='data2' ");

$result = mysql_query("SELECT id FROM table WHERE col1='data1' ") ;
while($row = mysql_fetch_array( $result )) { $id=$row['id'];}

header("Location:page.php?id=$id");
?>

最佳答案

让我把我的想法放在这里。我不知道我是否完全理解这个问题。

关于重复 key 更新

INSERT INTO table (ID, Col1, Col2)
VALUES (100, value1, value2)
ON DUPLICATE KEY UPDATE ID = 100; -- or whatever you need

INSERT INTO table (ID, Col1, Col2)
VALUES (100, value1, value2)
ON DUPLICATE KEY UPDATE ID = ID; -- this keeps the ID to what ever it was, no change.

不存在

INSERT INTO funds (ID, Col1, Col2)
SELECT 100, "value1", "value2"
FROM dual
WHERE NOT EXISTS (SELECT 1
FROM table
WHERE ID = 100
);

“在某些情况下,您可以将 DUAL 指定为虚拟表名称 没有引用表的地方:

其他想法。

替换成

除了一个重要的异常(exception),这与 INSERT 完全一样。如果发现重复行,它会先将其删除,然后执行INSERT,因此我们不会收到任何错误消息。

<?php 
mysql_query(" REPLACE INTO table SET col1='data1', col2='data2' ");

插入忽略

这是一种抑制重复错误的方法,通常是为了防止应用程序崩溃。有时您可能想尝试插入一个新行,并让它在没有任何提示的情况下失败,以防发现重复项。

<?php 
mysql_query(" INSERT IGNORE INTO table SET col1='data1', col2='data2' ");

关于php - 如果不存在则插入新行并获取新的或现有的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20175239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com