0

電子メール送信機能をテストできるように、電子メール アドレスを開発用の電子メール アドレスに置き換えようとしています。

以下の関数により Web ページが応答しなくなり、SQL Server Management 2008 でテーブルを見ようとしてもできません。問題はラインにあると思います

$scrub = sqlsrv_query($conn, "UPDATE " . $tName . " SET DCAEmail='test@test.edu'");

しかし、よくわかりません。関数全体:

function scrubEmail($conn){
   $tableNameList = array();
   $getTableName = sqlsrv_query($conn, "Select Name FROM sys.tables");
   while($row = sqlsrv_fetch_array($getTableName)){
      if($row['Name'] !== "sysdiagrams"){
        $tableNameList[] .= $row['Name'];   
      } 
    }

    foreach($tableNameList as &$tName){
        $hasDCAEmail = sqlsrv_query($conn,  "SELECT DCAEmail from " . $tName  );
        if($hasDCAEmail){
            $scrub = sqlsrv_query($conn, "UPDATE " . $tName . " SET DCAEmail='test@test.com'");
            if(!$scrub){
                die( print_r( sqlsrv_errors(), true));
            }
        }
    }
}
4

1 に答える 1

0

Raidenanceの助けのおかげで、私はそれを理解しました! 完全なコードは以下のとおりです。新しいクエリを実行する前に、sql_srv クエリをコミットする必要がありました。

function scrubEmail($conn){
   $tableNameList = array();
   $getTableName = sqlsrv_query($conn, "Select Name FROM sys.tables");
   while($row = sqlsrv_fetch_array($getTableName)){
        if($row['Name'] !== "sysdiagrams"){
            $tableNameList[] .= $row['Name'];   
        }
   }

    foreach($tableNameList as &$tabName){
        if ( sqlsrv_begin_transaction( $conn ) === false ) {
            die( print_r( sqlsrv_errors(), true ));
        }
        $hasFIELD = sqlsrv_query($conn,  "SELECT COLUMNNAME from " . $tabName  );
        if($hasFIELD){
        }
        else {
            sqlsrv_rollback( $conn );
            echo "hasFIELD Transaction rolled back.<br />";
        }

        while($row = sqlsrv_fetch_array($hasDCAEmail)){
            $scrub = sqlsrv_query($conn, "UPDATE " . $tabName . " SET COLUMN='test@test.edu'");
            if($scrub){     
                sqlsrv_commit( $conn );
                echo "Transaction committed.<br />";
            }
            else {
                sqlsrv_rollback( $conn );
                echo "Transaction rolled back.<br />";
            }           
        }
    } 
 }
于 2013-04-30T18:08:56.720 に答える