sql >> データベース >  >> RDS >> Mysql

PHPでmysqlクエリをループするにはどうすればよいですか?

    これは、組み込みのphp関数を使用したこの種の基本的なテンプレートです(古いスタイルのmysqlを想定していますが、他のデータベースバックエンドまたは高レベルのライブラリを使用しても同様です)。この例では、エラーは例外をスローすることで処理されますが、それはそれを行う1つの方法にすぎません。

    1. データベースに接続する
    2. 接続が成功したことを確認してください
    3. クエリを実行する
    4. 何らかの理由(通常はSQL構文エラー)でクエリが失敗しなかったことを確認します。失敗した場合は、その理由を調べてそのエラーを処理します
    5. クエリが少なくとも1行を返したことを確認します(通常、ゼロ行は特殊なケースです)
    6. 返された行をループして、必要なことをすべて実行します。

    例外クラスを定義する必要があります(ここで組み込まれていない構文はこれらだけですが、単純な例外をスローしないでください)。

    コード例:

    <?PHP
    //try to connect to your database.
    $conn = mysql_connect(...);
    
    //handle errors if connection failed.
    if (! $conn){
        throw new Db_Connect_Error(..); 
    }   
    
    // (try to) run your query.
    $resultset = mysql_query('SELECT ...');
    
    //handle errors if query failed.  mysql_error() will give you some handy hints.
    if (! $resultset){ 
        // probably a syntax error in your SQL, 
        // but could be some other error
        throw new Db_Query_Exception("DB Error: " . mysql_error()); 
    }
    
    //so now we know we have a valid resultset
    
    //zero-length results are usually a a special case    
    if (mysql_num_rows($resultset) == 0){   
        //do something sensible, like tell the user no records match, etc....
    }else{
        // our query returned at least one result. loop over results and do stuff.
        while($row = mysql_fetch_assoc($resultset)){
            //do something with the contents of $row
        }
    }
    


    1. .NETでのMySQLGeoSpatialデータ型の使用

    2. PHP-uniqid(、true)とuniqid()+ mt_rand()

    3. MYSQL/PHPで最大実行時間を設定する

    4. mysqlをBasexに接続する方法は?