有一个存储ID和名称的mysql数据库,当用户使用表单创建名称时,他们可以创建现有名称,因为唯一ID是ids
,例如:
d49f2c32f9107c87c7bb7b44f1c8f297 name
2fa9c810fbe082900975f827e8ed9408 name
我想要做的是保存第二个“名字” - >插入数据库时“name(1)”。
到目前为止,我所拥有的就是这个想法
假设输入的名称是'name'
$input = 'name';
选择我们要从mysql数据库中检查的名称
mysql_query(SELECT * FROM `table` WHERE `name` = '$input');
如果结果存在,则插入$input.'(1)'
我的问题是,如果名称存在,名称(1)也存在,那么如何在那里添加名称(2)......
答案 0 :(得分:3)
您可以在数据库中返回具有该名称的人数,然后将1添加到该数字。
SELECT COUNT(id) FROM table WHERE name LIKE '$input(%)');
答案 1 :(得分:1)
$i = 1;
$sourceName = $name;
while( sql "SELECT COUNT(*) FROM table WHERE name = '$name'" ) {
$name = $sourceName.' ('.$i.')';
$i++;
}
此时你有最后的$name
($i
计算迭代次数)
答案 2 :(得分:0)
这样的事情可以解决问题:
SELECT * FROM table WHERE name = '$input' OR name LIKE '$input(%)'
请注意,要使其正常工作,您需要在LIKE子句中转义$input
中的任何百分号,否则它们将被视为通配符。
答案 3 :(得分:0)
使用正则表达式检查字符串末尾两个括号之间的整数。如果存在整数,则为其添加1。
答案 4 :(得分:0)
您也可以尝试以相反的方式执行此操作,使name
字段唯一并尝试在while循环中输入它,如果失败则添加($i)
并每次执行$i++
迭代。
//编辑:
使用进行like
比较的解决方案的问题在于您会得到误报,例如$hi%
也会计算hippie
。这给你不必要的(1)添加!