gpt4 book ai didi

php - 创建一个随机字符串,检查表,如果已存在,则创建新字符串并重试,如果不存在,则插入 - 脚本不起作用?

转载 作者:行者123 更新时间:2023-11-29 14:46:10 28 4
gpt4 key购买 nike

我想做的是创建一个随机字符串,对照表检查它,如果它已经存在,则创建一个新的随机字符串,然后重试,如果它没有将其插入到所述表中。

我的脚本基于昨天给我的脚本,除了 if(mysql_num_rows($result) == 0) 之外,它都按计划运行,它将自动返回 false 并执行else 语句。我尝试将值更改为 1 而不是 0,这会执行 if 语句,无论它是 true 还是 false (例如,我换出 $authcode = dechex($num1).$dechex($num2) ; 对于诸如 $authcode ="eey7y764"; 之类的字符串,该字符串在表中不存在,但它仍然执行 if 语句)。

这是我的脚本:

function authCode() {

$num1 = mt_rand(1, 2147483647);
$num2 = mt_rand(1, 2147483647);
$authcode = dechex($num1).dechex($num2);

include("../db/71cfde725dc86.php");

$conn = mysql_connect($db_host, $db_uname, $db_pword) or die("Couldn't connect because ".mysql_error()); mysql_select_db($db_name);
$query = "SELECT COUNT(*) FROM records WHERE valcode='$authcode'";
$result = mysql_query($query) or die("SELECT query failed due to ".mysql_error());

if(mysql_num_rows($result) == 0)
{
$authCode = authCode();
}
else
{
$query2 = "INSERT INTO records (valcode) VALUES ('$authcode')";
$result2 = mysql_query($query2) or die("INSERT query failed due to ".mysql_error());
}

mysql_close($conn);

return $authcode;
}

authCode();

您能否告诉我需要进行哪些更改才能使其按我希望的方式运行?

任何评论或建议将不胜感激:)!

最佳答案

您不想比较行数。它始终为 1,因为您选择的是 COUNT(*)。它总是会给你一个数字(希望是 0 或 1)。您必须将 0 和 1 与该数字的 VALUE 进行比较,而不是该数字的数量(始终为 1)。

$row = mysql_fetch_array($result);
if($row['COUNT(*)']==1) ...

此外,您不想递归调用 authCode(),不是那样的。您可能会创建一大堆打开的数据库连接(更不用说它们会快速打开和关闭,这是昂贵的)。您可能想要传递连接。

function authCode($conn){
...
$authCode = authCode($conn);
}
$conn = mysql_connect( ... );
authCode($conn);
mysql_close($conn);

关于php - 创建一个随机字符串,检查表,如果已存在,则创建新字符串并重试,如果不存在,则插入 - 脚本不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6921683/

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