2016-05-18 10 views
0

良い午後、 私のコードの次のモックアップスクリプトがあります。以下はPHPでは動作しませんが、エラーは返されませんが、クエリはSQL Serverに送られ、プロファイラトレースに表示されます。 PHPは応答を返しません。PHP INSERT INTOテーブルまたはテーブル変数が機能していないとエラーなし

アイデア?

はPHPで動作します:

SELECT * FROM TABLE 

PHPで動作しません。

DROP TABLE #TMP1 
SELECT 50 AS INT INTO #TMP1 
SELECT * FROM #TMP1 

PHPで動作しません。

DECLARE @TABLE TABLE 
(
ID INT 
) 

INSERT INTO @TABLE (ID) 
SELECT 40 

SELECT * FROM @TABLE 

PHPで動作しません。

<?php 
$databaseName = "DB" ; 
$serverName = "3424.34.234.3"; 
$uid = "sdfsf";  
$pwd = "Jsdfsf";  


$connectionInfo = array("UID"=>$uid,        
         "PWD"=>$pwd ,        
         "Database"=>$databaseName); 


/* Connect using SQL Server Authentication. */  
$conn = sqlsrv_connect($serverName , $connectionInfo); 



$tsql = " 
DECLARE @TABLE TABLE 
(
ID INT 
) 
INSERT INTO @TABLE (ID) 
SELECT 40 

SELECT * FROM @TABLE 
"; 



//EXEC PLAYER_LOOKUP '$result'; 

/* Execute the query. */  

$stmt = sqlsrv_query($conn, $tsql); 


    //Working Query 
/* Iterate through the result set printing a row of data upon each iteration. BR=."\n" */ 

    while($row = sqlsrv_fetch_ARRAY($stmt, SQLSRV_FETCH_ASSOC)){ 
     { 

    echo $row; 


    }} 

/* Free statement and connection resources. */  
sqlsrv_free_stmt($stmt);  
sqlsrv_close($conn);  

?> 
+0

SQLサーバー管理スタジオを使用して "$ tsql"を直接実行すると動作しますか? –

+0

SSMSで実行されるよう修正する –

答えて

0

あなたがしなければならないことは、ストアドプロシージャの始めにSET NOCOUNT ONを呼び出すことです。これにより、「影響を受けた行」メッセージがクライアントに送信され、プロシージャの出力と誤解されることがなくなります。また、SELECT * INTO文の前に設定しているかもしれません。

関連する問題