我遇到了一些代码问题。
我正在尝试生成一个唯一的名称以插入数据库。
我创建了以下函数,该函数检查名称是否已存在:
function checkExists($database_reelfilm, $reelfilm, $mySlug, $locVal){
$mmid_rs_slugCheck = "-1";
if (isset($mySlug)) {
$mmid_rs_slugCheck = $mySlug;
}
$mmid2_rs_slugCheck = "-1";
if (isset($locVal)) {
$mmid2_rs_slugCheck = $locVal;
}
mysql_select_db($database_reelfilm, $reelfilm);
$query_rs_slugCheck = sprintf("SELECT * FROM locations_loc WHERE locations_loc.slug_loc = %s AND locations_loc.id_loc != %s", GetSQLValueString($mmid_rs_slugCheck, "text"),GetSQLValueString($mmid2_rs_slugCheck, "int"));
$rs_slugCheck = mysql_query($query_rs_slugCheck, $reelfilm) or die(mysql_error());
$row_rs_slugCheck = mysql_fetch_assoc($rs_slugCheck);
$totalRows_rs_slugCheck = mysql_num_rows($rs_slugCheck);
if($totalRows_rs_SlugCheck > 0){
return true;
}else{
return false;
}
};
然后我创建一个循环来检查变量名是否存在,如果它确实我希望它将计数器的值添加到变量名称然后重新检查以查看是否存在,直到我有一个唯一的名称,然后我可以保存到我的数据库。
$updateVal = slugify($row_rs_locations['name_loc']);
$newSlug = slugify($row_rs_locations['name_loc']);
$locVal = $row_rs_locations['id_loc'];
//echo(slugify($row_rs_locations['name_loc']));
$checkCount = 1;
$isDupe = '<BR>';
while(checkExists($database_reelfilm, $reelfilm, $newSlug, $locVal)){
$isDupe = 'Duplicate Added ' . $checkCount . ' to slug...<BR>';
$newSlug = $newVal . $checkCount;
$checkCount ++;
}
if($updateVal != $newVal){
$updateVal = $newSlug;
}
我显然做错了,我需要在下一次迭代中使用while循环来使用循环中设置的newSlug值,从我的各种尝试中我完全不确定是否可行。
最好的方法是什么?
答案 0 :(得分:1)
$newVal
没有给出值,但它被使用了两次(第二块代码)。我认为你需要这样的东西:
$newSlug = slugify($row_rs_locations['name_loc']);
$newVal = $newSlug;
答案 1 :(得分:1)
我需要在下一次迭代中使用while循环来使用newSlug值 在循环中设置
在while循环中你做
$newSlug = $newVal . $checkCount;
但$ newVal不存在。用以下内容替换该行:
$newSlug .= $checkCount;