我网站的用户可以按表单提交post title
和post content
。 post title
将被保存并转换为SEO友好模式(eg: "title 12 $" -> "title-12")
。这将是这篇文章的网址。
我的问题是,如果用户输入的标题与之前输入的标题相同,则这些帖子的网址将相同。那么可以通过在标题的末尾附加一个数字来自动修改新标题吗?
例如
“title-new” - > “title-new-1”或db中存在“title-new-1” 将其转换为“title-new-2”
对不起,我是新手,也许这很容易,谢谢你的帮助。
我正在使用PDO。
答案 0 :(得分:0)
保存帖子标题时,您可以查询数据库是否存在?如果它存在,则只需附加一个数字并再次查询,如果它再次存在则将其递增1,因此。
答案 1 :(得分:0)
在数据库中选择该标题,并使用rowCount()检查您有多少结果。如果结果为0:您可以添加它,如果结果为n,则将n添加到标题中。
要附加使用类似的东西(不正确):
$count = $del->rowCount(); //Assuming this returns 1
if($count){
$title = $title . "-" . $count;
}
这会给你“thedplicatetitle-1”
答案 2 :(得分:0)
谢谢@Ratna& @Borniet为您的答案。我将解释的代码发布给任何其他想要它的用户。如果有添加或删除somrthing或更好的方式请告诉我。
//首先我要搜索“新的未更改的标题名称”,它是否存在于db中。
$newtitle= "tst-title";
$dbh = new PDO("mysql:host=localhost;dbname='dbname', 'usrname', 'password');
$stmt = $dbh->prepare("SELECT * FROM `tablename` WHERE `col.name` = ? LIMIT 1");
$stmt->execute(array($newtitle));
if ( $stmt->rowCount() < 1 ) {
// enter sql command to insert data
}
else {
$i='0';
do{
$i++;
$stmt = $dbh->prepare("SELECT * FROM `tablename` WHERE `url` = ? LIMIT 1");
$stmt->execute(array($newtitle.'-'.$i));
}
while($stmt->rowCount()>0);
// enter sql command to insert data
}
就是这样。我分成两部分的原因是因为我想在网址上添加“ - ”而不是数字。