我正在尝试做的是创建一个随机字符串,对表进行检查,如果它已经存在,创建一个新的随机字符串并重试,如果它没有将其插入到所述表中。
我的脚本基于我昨天给出的脚本,除了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}}
请您告诉我需要做哪些更改才能让它按照我的意愿运行?
任何意见或建议将不胜感激:)!
答案 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);