检查是否有'string'在MySQL列中使用PHP


Check for 'string' in a MySQL column using PHP

所以基本上我想检查一个MySQL database表,看看是否有一个特定的数字或字符串存在于某个列(使用PHP)。

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

现在我做了一些研究,我发现了类似的问题,但似乎没有一个很好地回答这个特定的问题使用PHP。有些人说使用INSTR(参见第二个解决方案:MySQL查询字符串包含),但我不太确定如何实现我想做的事情(它返回所有行(据说)'字符串'发生在列中,但这没有帮助。如果是它发生的次数,那么我们就在正确的轨道上)。如果这是不可能的或很难做到的,那么我也可以只是读取我的特定列中的所有数据(参见:如何使用PHP获取列中的所有值?),然后执行一个常规的PHP函数以某种方式搜索我生成的ID…如果它返回false,那么我们不必重新生成。

所以问题是:我如何执行排序的函数返回真或假关于是否"字符串"(或数字)存在于某个MySQL表列(使用PHP)?我也在使用MySQLi,过程语法…当涉及到MySQL和PHP时,我是一个相对的初学者。

提前感谢!

我不会那样做,想象一下(只是想象一下)你有99999999个客户,你的函数将被重复999999999次。这将扼杀您的应用程序。相反,创建一个

autoincrement int(10) unique

字段,让它从100000000开始,它将自动增加1到数字。这样,无论发生什么情况,mysql都可以确保这个数字是唯一的,并且你不需要一个对你的应用程序有潜在危险的函数。

"我如何执行排序函数返回真或假关于是否'字符串'(或数字)存在于某个MySQL表列":

$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'];

使用自动增量会更简单。

编辑:如果"如果某个数字或字符串存在于某个列中",你的意思是该列的整个值,或者它只是需要成为该列文本的一部分,这并不是很清楚。如果后者使用LIKE和通配符%