【发布时间】:2012-05-08 16:14:46
【问题描述】:
我想生成一个字符串来发布一个 url。然后将post url设为:http://www.mydomain.com/post/afCeYk,并将此url存储在mysql中。为了避免重复 url ,我认为首先应该检查 mysql 是否已经存在 url 。在我的代码中,我只检查一次,我无法确保第二个生成字符串不存在。那么我该如何做一个循环呢?
$shufstr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$rdstr = substr(str_shuffle($shufstr),0,6);
$query = mysql_query("select * from table where post_url = '".$rdstr."'");
if(mysql_num_rows($query)>0){
//insert the url rules into db
}else{
//generate a new string and check the db again
}
【问题讨论】:
-
如何制作循环?严重地?你搜索了吗?无论如何,这是一个糟糕的方法 - 随着 URL 的消耗,它会变得越来越慢。除非您需要难以猜测的 URL,否则请使用自动增量 ID。
-
我的建议是为您的列添加一个唯一键以真正防止重复。
-
请停止使用古老的
mysql_*函数编写新代码。它们不再维护,社区已经开始deprecation process。相反,您应该了解准备好的语句并使用PDO 或MySQLi。如果你想学习,here is a quite good PDO-related tutorial.