创建一个随机字符串,检查表,如果已经存在,创建新并重试,如果没有,插入 - 脚本不工作?

时间:2011-08-03 04:36:20

标签: php mysql

我正在尝试做的是创建一个随机字符串,对表进行检查,如果它已经存在,创建一个新的随机字符串并重试,如果它没有将其插入到所述表中。

我的脚本基于我昨天给出的脚本,除了if(mysql_num_rows($result) == 0)之外,它都按计划工作,它将自动返回false并执行else语句。我试图将值更改为1而不是0,这将执行if语句,无论它是真还是假(例如,我将$authcode = dechex($num1).$dechex($num2);替换为$authcode ="eey7y764";等字符串,而不是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(); t存在于表中,但仍然执行if语句。

这是我的剧本:

{{1}}

请您告诉我需要做哪些更改才能让它按照我的意愿运行?

任何意见或建议将不胜感激:)!

1 个答案:

答案 0 :(得分:1)

您不想比较行数。它始终为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);