0

少しコードに問題があります。

データベースに挿入する一意の名前を生成しようとしています。

名前が既に存在するかどうかを確認する次の関数を作成しました。

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;
        }

私は明らかに何か間違ったことをしています.ループで設定されたnewSlug値を使用するには、次の反復でwhileループが必要です.私のさまざまな試みから、これが可能かどうかはまったくわかりません.

これを達成する最良の方法は何ですか?

4

2 に答える 2

1

ループで設定された newSlug 値を使用するには、次の反復で while ループが必要です

あなたが行うwhileループで

$newSlug = $newVal . $checkCount;

しかし、$newVal は存在しません。その行を次のように置き換えます。

$newSlug .= $checkCount;
于 2013-02-03T19:51:19.730 に答える
1

$newVal値が与えられることはありませんが、2 回使用されます (コードの 2 番目のブロック)。次のようなものが必要だと思います:

$newSlug = slugify($row_rs_locations['name_loc']);
$newVal = $newSlug;
于 2013-02-03T19:43:57.173 に答える