我正在编写一个脚本,检查 url 是否已存在于数据库中,如果是,则在最后添加额外的 -1 或 -2 等。我找到了这个脚本
但它需要在添加-1 后再次检查它。因为它可能已经存在。我怎样才能做到这一点?我累了我这样
$query = mysql_query("SELECT * FROM posts WHERE url='$url'");
while ( $query ) {
$result = mysql_fetch_assoc($query);
$url = $result['url'];
$urlnew = $result['url'];
$oldurl = $url;
$first = 1;
$separator = '-';
while ( $urlnew == $url ) {
$url = preg_match('/(.+)'.$separator.'([0-9]+)$/', $urlnew, $match);
$urlnew = isset($match[2]) ? $match[1].$separator.($match[2] + 1) : $url.$separator.$first;
$first++;
}
$url = $urlnew;
}
上面的新代码工作得很好。但它只检查一次。我怎样才能让它检查直到它在数据库中不存在?
尝试在 $url -$urlnew 之后在底部添加一个新的 sql 查询,但它只会破坏函数。
编辑
这是正确的脚本:D
$query = mysql_query("SELECT * FROM posts WHERE url LIKE '%".$url."%'");
if ( $query ) {
while ( $result = mysql_fetch_assoc($query) ) {
$url = $result['url'];
$urlnew = $result['url'];
$first = 1;
$separator = '-';
while ( $urlnew == $url ) {
preg_match('/(.+)'.$separator.'([0-9]+)$/', $urlnew, $match);
$urlnew = isset($match[2]) ? $match[1].$separator.($match[2] + 1) :$url.$separator.$first;
$first++;
}
}
}
$url = $urlnew;