【发布时间】:2018-08-22 12:43:06
【问题描述】:
我正在使用 php 创建一个唯一的参考号。
我想检查该号码是否已存在于数据库中。
这是我当前的代码:
<?php
function generateRandomString($length = 3) {
$characters = 'ABCDEFGHJKLMNOPQRSTVWXYZ';//No "I"
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
$var = generateRandomString();
$random = rand(1000, 9999);
$randoms = rand(1000, 9999);
$tokennr = "I$var-$random" . "0" . $randoms;
require_once('connect_pdo.php');
header('Content-Type: text/html; charset=utf-8');
$stmt = $conn->prepare("SELECT UniqueNumber FROM `MyTable` ");
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$uniqueref = $row["UniqueNumber"];
}
if($tokennr == $uniqueref){
$tokennrs = "I$var-14$random" . "6" . $randoms;
$token = $tokennrs;
}else{
$token = $tokennr;
}
echo $token;
?>
似乎代码仍然使用唯一编号,即使它已经存在。 (我硬编码了一些测试数字)。
我不想使用已经存在的数字。
【问题讨论】:
-
触发另一个检查号码的语句
-
您的查询列不匹配。为什么不只查询那个数字,而不是查询所有数字并循环遍历它们?
-
这就是我在if语句中所做的
-
您似乎在 while 循环中覆盖了
$uniqueref。因此,在您的 if 语句中,您只检查您的$tokennr是否等于您获取的最后一个唯一令牌。如果它与之前的任何一个匹配,它仍然可以通过检查。 -
感谢@DirkScholten。我如何解决它?我对编程还是很陌生