gpt4 book ai didi

PHP 函数循环检查数据库中是否存在字符串

转载 作者:行者123 更新时间:2023-11-29 07:59:18 25 4
gpt4 key购买 nike

我正在尝试使用 PHP 函数检查 MySQL 数据库是否存在先前随机创建的值,如果存在则重复,直到生成不存在的值为止。

目前,我惨遭失败,尽管我一开始相信我的方法会起作用,但事实并非如此。

PHP

我在脚本中尝试了这个,然后意识到除非调用它们,否则 php 函数不会运行。

 conn(); //db connection 
function genID() {
$newIDref = uuaig(10);
$queryCHECK = "SELECT *
FROM contentArticle_vids
WHERE videoArticle_id = '$newIDref'
";
$resultCHECK = mysql_query($queryCHECK);
$numrows = mysql_num_rows($resultCHECK);

if ($numrows !== 0) {
genID();
die();
}
}

所以..然后我尝试了这个,这让它真的很不高兴(破坏了整个页面)。

conn(); //db connection 
genID();

function genID() {
$newIDref = uuaig(10);
$queryCHECK = "SELECT *
FROM contentArticle_vids
WHERE videoArticle_id = '$newIDref'
";
$resultCHECK = mysql_query($queryCHECK);
$numrows = mysql_num_rows($resultCHECK);

if ($numrows !== 0) {
genID();
die();
}
if ($numrows === 0) {
return $newIDref;
die();
}
}

作为引用,随机字符串生成器是 uuaig(10)

我最终需要生成随机字符串,如果数据库中确认该字符串不存在,则返回该随机字符串。

我该如何继续?

最佳答案

为什么要做出选择?只需在 videoArticle_id 上放置一个唯一索引即可。然后,当您尝试生成并插入新的 id 时,只需处理插入失败并使用新的 id 重试即可。

如果您有一个用于生成 id 的代码方案,并且预计 id 冲突很少,那么这会更有效。

所以你的函数可能看起来像:

function genID() {
$idSuccess = false;
$max_retries = 3;
$i = 1;
while (false === $idSuccess && $i <= $max_retries) {
$newIDref = uuaig(10);
$queryCHECK = "INSERT INTO contentArticle_vids (`videoArticle_id`)
VALUES ('$newIDref')";
$idSuccess = mysql_query($queryCHECK);
$i++;
}
if(false === $idSuccess) {
error_log('Could not generate ID in genID()');
return false;
}
return $newIDref;
}

注意,我添加了最大重试限制,因此您不会有无限循环的可能性。另请注意,这将继续并在数据库表中为这个新的唯一 ID 保留位置。

最后,我基本上必须注意到您正在使用已弃用的 mysql 扩展。您确实不应该使用此扩展编写新代码。

关于PHP 函数循环检查数据库中是否存在字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24317156/

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