gpt4 book ai didi

php - MySQL/PHP 将新值插入表中(如果它还不存在)并以任何一种方式获取其 PK

转载 作者:行者123 更新时间:2023-11-29 04:54:38 24 4
gpt4 key购买 nike

假设我有一个名为 WORDS 的表,其中只有一个主键 (ID) 和一个 WORD 列。 WORD 列应该是唯一的 varchar,ID 是一个自增整数字段。

在 SQL 术语中,

CREATE TABLE WORDS(
ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
WORD VARCHAR(35) NOT NULL,
UNIQUE(WORD)
);

在检查 PHP 中的单词列表时,我想向 WORDS 表中插入一个新单词。如果它已经存在,我希望什么都不会发生 - 如果它不存在,我希望它被插入。

我发现最好的解决方案是使用 INSERT IGNORE。不过,我现在必须更进一步……我的 PHP 脚本需要知道单词插入表后的主键。如果它不存在,这很容易 - 我可以使用 mysql_insert_id。如果它存在,我似乎必须对表进行查询以获取该词的主键已经是什么。

有没有一个巧妙的方法:

"Insert this into the table if it's not already there, and give me the primary key it's in either way."

有机会吗?

最佳答案

没有简单的方法可以做到这一点。但是你可以将它简化为一个函数

function wordDB($word) {
$sql = "select * from WORDS where WORD = '".$word."'";
$result = mysql_query($sql);
if($result) { #if exists
while($row = mysql_fetch_array($result)) {
$id = $row['id'];
}
} else { # if doesn't exist
$insertSQL = "insert into WORDS (WORD) values ('".$word."')";
mysql_query($insertSQL);
$id = mysql_insert_id();
}
return $id;
}

这是一个简短的函数,可以完成您基本上要求的所有事情。

关于php - MySQL/PHP 将新值插入表中(如果它还不存在)并以任何一种方式获取其 PK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7786344/

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