0

こんにちは、php を使用してデータベースを更新するスクリプトを作成しようとしています。

データベースの 2 つの列を結合し、それらの特殊文字とスペースを削除して、データベースの 3 番目の列に結果を挿入する必要があります

fn        ln       result
Super-     Man      sman
Bat&       Man      bman
Wonder -   Woman    wwoman

スクリプトで必要な結果が得られないようです

    <?php
    include('connect2.php');

    $query = mysql_query("SELECT * from alumni");
    $query = mysql_fetch_array($query);

    while($query){
    $query[ln] = str_replace(" ", "", $query[ln]); 
    $query[fn] = str_replace(" ", "", $query[fn]); 

    $query[ln] = ereg_replace("[^A-Za-z0-9]", "", $query[ln]);
    $query[fn] = ereg_replace("[^A-Za-z0-9]", "", $query[fn]);

    $query[ln] = strtolower($query[ln]);
    $query[fn] = strtolower($query[fn]);

    $query[fn] = substr($query[fn],0,1);

    printf($username = $query[fn] . $query[ln]);



    mysql_query("UPDATE alumni SET username='$username' WHERE alumni_id = $query[alumni_id]") or die(mysql_error());    
    }

    ?>

誰でも私を助けることができますか?前もって感謝します

***編集* **** ようやく機能するようになりました

    <?php
    include('connect2.php');

    $b = mysql_query("SELECT * from alumni");

    while($a = mysql_fetch_array($b)){
        //echo $a[fn];
    $ln = str_replace(" ", "", $a[ln]); 
    $fn = str_replace(" ", "", $a[fn]); 

    $ln = ereg_replace("[^A-Za-z0-9]", "", $ln);
    $fn = ereg_replace("[^A-Za-z0-9]", "", $fn);

    $ln = strtolower($ln);
    $fn = strtolower($fn);

    $fn = substr($fn,0,1);

    printf($username = $fn . $ln);



    mysql_query("UPDATE alumni SET username='$username' where alumni_id = $a[alumni_id]") or die(mysql_error());    
    }

    ?>
4

1 に答える 1

0

あなたのコードにはいくつかの問題がありますが、注目すべき最大の問題は次のとおりです。

 $query = mysql_fetch_array($query);

mysql_fetch_array 関数は結果セットを受け取り、フェッチするレコードの配列を返します。この命令では、結果セットを配列に置き換えます。結果セットが失われると、それ以上のレコードをフェッチできなくなります。

ところで、ループ内で次のレコードを取得していません。私が見る別の問題があります。

于 2012-11-25T04:34:51.007 に答える