2016-07-13 6 views
0

以下のコードは、n個の行をテーブルに挿入するように設計されています。ただし、n> = 108の場合は、108行しか挿入できません。 n < 108のためにうまく動作します。私はデータベースでクエリを実行し、期待どおりに動作します。皆さんの誰かに同様の問題がありましたか?どんな助けもありがとう。sqlsrv_queryを使用したマルチインサート

$data = "a1='1', a2='2', a3='3', a4='4', a5='5', a6='6'"; 
    $queryInsert = 
    " SELECT $data INTO [$tableName] 
     DECLARE @i int 
     SET @i=1 
     WHILE (@i < $n) 
     BEGIN 
      INSERT [$tableName] 
      SELECT $data 
      SET @i = @i + 1 
     END 
    "; 
    $stmt1 = sqlsrv_query($conn1, $queryInsert); 

EDIT:PHP7、ドライババージョン:4

+0

なぜこのようなループを使用して最初の場所にデータを挿入するのかと聞かれます。 –

+0

@SeanLange、私は誤ってsleep(1)を追加してこれを修正しました。 sqlsrv_queryの後になぜこのようなことが起こるか、あなたは何か考えていますか? – John

+0

それがなぜそれを "修正"するのか分かりません。このようにループするのではなく、数値または集計表を使用して調べる必要があります。それはずっと簡単です。 http://www.sqlservercentral.com/articles/T-SQL/62867/ –

答えて

0

は、どうやらこれが機能するようになりました。理由は分かりません。

$data = "a1='1', a2='2', a3='3', a4='4', a5='5', a6='6'"; 
    $queryInsert = 
    " SELECT $data INTO [$tableName] 
     DECLARE @i int 
     SET @i=1 
     WHILE (@i < $n) 
     BEGIN 
      INSERT [$tableName] 
      SELECT $data 
      SET @i = @i + 1 
     END 
    "; 
    $stmt1 = sqlsrv_query($conn1, $queryInsert); 
    sleep (1); 
関連する問題