检查';字符串';在使用PHP的MySQL列中

检查';字符串';在使用PHP的MySQL列中,php,mysql,mysqli,Php,Mysql,Mysqli,所以基本上我想检查一个MySQL数据库表,看看某个列中是否存在某个数字或字符串(使用PHP) 这样做的原因是,添加到我的表中的每个“成员”都有一个唯一的、随机的9位数字,介于100000000和999999999之间。但是,我需要确保PHP代码不会生成一个在过去已经提供给其他成员的ID。如果它发现生成的ID已经存在,它将重新生成该编号,直到得到以前未使用过的编号 现在我做了一些研究,发现了类似的问题,但似乎没有一个能用PHP回答这个特定的问题。有人说要使用INSTR(见第二种解决方案:),但我不

所以基本上我想检查一个
MySQL数据库
表,看看某个列中是否存在某个数字或字符串(使用PHP)

这样做的原因是,添加到我的表中的每个“成员”都有一个唯一的、随机的9位数字,介于100000000和999999999之间。但是,我需要确保PHP代码不会生成一个在过去已经提供给其他成员的ID。如果它发现生成的ID已经存在,它将重新生成该编号,直到得到以前未使用过的编号

现在我做了一些研究,发现了类似的问题,但似乎没有一个能用PHP回答这个特定的问题。有人说要使用INSTR(见第二种解决方案:),但我不太确定如何将其实现到我正在尝试做的事情中(它返回(假设)列中出现“string”的所有行,但这没有帮助。如果它出现了多少次,那么我们就走上了正确的轨道)。 如果这不可能或很难做到,那么我也可以读取我特定列中的所有数据(请参阅:),然后以某种方式执行常规PHP函数来搜索我生成的ID…如果返回false,那么我们不必重新生成

所以问题是:我如何执行一个排序函数,该函数返回true或false,以判断某个MySQL表列(使用PHP)中是否存在“字符串”(或数字)? 我也在使用MySQLi,过程语法……对于MySQL和PHP,我是一个相对的初学者


提前谢谢

我不会这么做,想象一下(想象一下)你有99999999个客户,你的功能会重复9999999次。这将终止您的应用程序。相反,创建一个

autoincrement int(10) unique
字段,让它从100000000开始,它将自动增加一个数字。通过这种方式,mysql可以确保无论发生什么情况,您的数字都是唯一的,并且您不需要对您的应用程序有潜在危险的函数。

“我如何执行排序函数,该函数返回true或false,以确定某个mysql表列中是否存在“字符串”(或数字)。”:

使用自动增量确实会更容易


编辑:如果“某个列中存在某个数字或字符串”,您的意思是该列的整个值,或者它只需要是该列文本的一部分,则不太清楚。如果后者将LIKE与通配符一起使用
%

,感谢您的回复!不幸的是,ID应该是一个密码,因此自动递增会使(潜在的)黑客很容易发现模式。至于
rand()
附带的限制,我可以使用验证码来消除垃圾邮件,只需扩展随机数生成器的搜索字段。我真的需要一个简单的方法来确保
rand()
没有生成数据库中已经存在的数字(在相应的列下)。好的,如果它是密码,那么每个纯文本字段都必须被认为是不安全的,应该避免。您将获得密码\u散列的几乎所有唯一值,因此这可能是上面提到的更好的替代方法@威廉法:是的,的确如此。我不知道有
password\u hash()
存在,但经过一些研究和测试,看起来我将使用传统的“用户输入密码”路径,然后使用
password\u hash()
保护它。非常感谢你的帮助…这不是我来这里想要的,但这是我最终将要使用的。就唯一的ID而言,我认为
自动增量
也是最好的方法@迈克尔
$query = "SELECT count(*) AS num_found 
FROM myTable 
WHERE columnName = ?"
$stmt= $conn->prepare($query);
$stmt->execute(array($value));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row['num_found'];