0

次のコードを見て、それを回避する方法があるかどうか教えてください。

if ($current_server_is_mysql):
    while ($row = mysql_fetch_assoc($RS)) {
else:
    while( $row = sqlsrv_fetch_array( $RS, SQLSRV_FETCH_ASSOC)){ 
endif:  

使用しているサーバーによっては、レコードを適切な/ネイティブな方法で $RS レコードセットにコンパイルしたいと考えています。この部分を通過できれば、mysql と mssql $row の両方を同じ方法で利用できるため、残りは問題ありません。たとえば$row['fieldname']、行が mysql または mssql リソースであったかどうかのフィールド値が表示されます。したがって、すべては上記のスニペットの失敗に帰着します。

else:上記のスニペット の部分を指すエラーが発生します。

Parse error: syntax error, unexpected T_ELSE in D:\Hosting\5291100\html\blueprint\pages\populate_migration_table.php on line 415

なぜこのエラーが発生するのか理解できます。

しかし、while ループのシーバン全体を複製することなく、回避策を提供していただけることを願っています。

4

1 に答える 1

1

構文の不一致がいくつかあり、コードを次のような関数に入れるとうまくいきました。

if ($current_server_is_mysql):
    while ($row = mysql_fetch_assoc($RS)) {
        ProcessThisRow($row);
    }
else:
    while( $row = sqlsrv_fetch_array( $RS, SQLSRV_FETCH_ASSOC)){
        ProcessThisRow($row);
    }
endif;

function ProcessThisRow ($row) {
    /*Put your code in this function */
    return true;
}
于 2012-05-03T17:12:27.540 に答える