2012-03-19 4 views
0

PHPを使用してMSSQLデータベースに対してストアドプロシージャを実行しています。PHP/MSSqlストアドプロシージャをプレビューする方法

Navicatを使用してストアドプロシージャを作成して手動で実行すると、正しい結果が得られます。

クエリをビルドしてPHPで実行すると、別の結果が得られます。

phpがサーバーに対して作成し実行しているストアドプロシージャをプレビューする方法はありますか?

これは正確なコードではありませんが、本質的に私たちがやっていることです。

$stmt = mssql_init("sp_doSomething"); 
mssql_bind($stmt, "@sid", $sid, SQLINT4, false); 
mssql_bind($stmt, "@value", $value, SQLINT4, false); 
$result = mssql_execute($stmt); 

$ stmtに含まれる実際のSQL文をプレビューできることが大好きです。

ご協力いただければ幸いです。

+0

ほとんどすべての操作を行うことができるため、ストアドプロシージャを「プレビュー」する一般的な方法はありません。どのように電子メールを送信するプロシージャをプレビューしますか? SQLプロファイラは正しいツールですが、あなたはそれを使うことはできません。プロファイラを使用できるテスト環境がありますか?また、「異なる結果」と、使用しているSQL Serverのバージョンとエディションの意味についても説明する必要があります。 – Pondlife

答えて

0

SQLクエリープロファイラは、リアルタイムでSQLサーバーが現在行っていることをフックして監視するのに適したツールです。それは役に立つだろう。

+0

さらに複雑にするために、MSSqlサーバーへのアクセスレベルはありません。私たちができるのは、それに対して電話をかけることだけです。私たちの側でコールを見るための他の方法はありますか? – teamcolab

+0

mssqlのストアドプロシージャをphp内の行ごとに実行することはできません。 MSSQLにアクセスできない場合は、spの内容が手書きのクエリと同じであることをどのように知っていますか?サーバーが生成する値を見て、同じ値を自分自身で取得しようとします。そして、私の関数がまったく同じ結果を生み出すなら、異なる入力で試してみてください。 –

+0

試行錯誤はこれまで私たちのために働いていませんでした。だから、私はそれを実行する前にPHPが作成している呼び出しを見る方法がないということを私は理解していますか? mssql_execute()が何を実行するのかを見る方法はありませんか? – teamcolab

0

あなたのWindowsユーザーあなたは、この行の拡張子= php_pdo_sqlsrv_56_ts.dllと拡張子を追加2ファイル1.php_pdo_sqlsrv_56_ts.dllの2.php_sqlsrv_56_ts.dllをダウンロードして、変更のphp.iniファイルの後にPHPのフォルダを取ることができるかどうか= php_pdo_sqlsrv_56_ts.dll と再起動apache

$connection = mssql_connect('hostname', 'username', 'password'); 
if (!$connection) { 
    die('Unable to connect!'); 
} 
if (!mssql_select_db('db-name', $connection)) { 
    die('Unable to select database!'); 
} 
$vall='zanala'; 
$stmt = mssql_init("SYSTEM_USERS_FIND_BY_USERNAME",$connection); 
mssql_bind($stmt, "@IN_USERNAME",$vall, SQLVARCHAR, false, false, -1); 
$result=mssql_execute($stmt); 
$row = mssql_fetch_assoc($result); 
echo $my_id = $row['IID'];