0

全て、

私は数年前からstackoverflowに潜んでいて、目前の問題を解決するために必要な助けを常に見つけることができました. ただし、今回は、発生している同じ問題に当てはまる質問が見つからなかったため、最初の質問を作成する必要がありました。

私は1週間以上困惑しており、予定された日付をすでに吹き飛ばしたため、仕事でお湯に浸っています. あなたがコーディングの頭痛の種を助けてくれることを願って、私はあなたのなすがままに身を委ねました。

VM (Windows 2008 r2 を実行) 上の SQL 2008 サーバーで PHP を介してストアド プロシージャを実行し、1 つのパラメーターを渡すことでデータを返すことができます。

そのパラメーターには合計 11 の選択肢があります。これらの選択肢の 1 つを渡すたびに、期待されるデータが返されます。

ただし、他の選択肢を使用するたびに、データは返されません (現在のコードでは、エラーも返されません)。

ストアド プロシージャに渡す$application_selectedの選択肢は 11 あり、そのうちの 1 つだけがデータを返します。他のいずれもデータやエラーを返しません。

ここに私のコード全体があります:

<!DOCTYPE html>
<html>
<head>
<title>data</title>
</head>
<body>

<?php
////////////////////////////////////////////////////////////////////////////
//connection information
$servername = "192.168.1.104";
$username = "sa";
$password = "*";
$database = "*";

$connection_info = array( "Database"=>$database, "UID"=>$username, "PWD"=>$password);
$conn = sqlsrv_connect( $servername, $connection_info);

if($conn===FALSE) die( print_r( sqlsrv_errors(), true));
else echo "<font color=\"blue\">DB Connected.</font><br>";
/////////////////////////////////////////////////////////////////////////////

$application_selected = "param1";
$sql_cmd = "EXECUTE GetApprover '$application_selected'";

$execute_this = sqlsrv_prepare($conn, $sql_cmd);
$application_proc = sqlsrv_execute($execute_this);

if($application_proc===FALSE) die( print_r( sqlsrv_errors(), true)); //execute failed; die and display errors

else echo "<font color=\"blue\">DB data retrieved.</font><br><br>";

$row_apps = "";
$count = 0;
echo "<font color=\"blue\">Attempting data output via loop</font><br><br>";

/////////////////////////////////////////////////////////////////////////////
// output data
//echo var_dump($execute_this)."<br><br>";
echo "<font color=\"blue\">Application selected = </font>\"".$application_selected."<font color=\"blue\">\" - data pulled &#9660;</font><br><br>";
while(($row_apps = sqlsrv_fetch_array($execute_this)) && (sqlsrv_fetch_array($execute_this) <> FALSE)) { //while var has data
if (!isset($row_apps)) die( print_r( sqlsrv_errors(), true));
$count += 1;
echo $row_apps['ApplicationName']." - ".$row_apps['ApproverCode']." - ".$row_apps['ApproverDesc']." - ".$row_apps['FullName']." - ".$row_apps['Email']." - ".$row_apps['UserId']."<br>";
}
/////////////////////////////////////////////////////////////////////////////////

echo "<br><font color=\"blue\">&#9650; Data displayed.";
echo "<br><br><font color=\"blue\">There were [<font color=\"red\"><b>$count</b></font>] rows returned.<br><br><br>";

echo "<br>\$servername = ";
echo var_dump($servername)."<br>";
echo "<br>\$username = ";
echo var_dump($username)."<br>";
echo "<br>\$password = ";
echo var_dump($password)."<br>";
echo "<br>\$database = ";
echo var_dump($database)."<br>";
echo "<br>\$connection_info = ";
echo var_dump($connection_info)."<br>";
echo "<br>\$conn = ";
echo var_dump($conn)."<br>";
echo "<br>\$application_selected = ";
echo var_dump($application_selected)."<br>";
echo "<br>\$sql_cmd = ";
echo var_dump($sql_cmd)."<br>";
echo "<br>\$execute_this = ";
echo var_dump($execute_this)."<br>";
echo "<br>\$application_proc = ";
echo var_dump($application_proc)."<br>";
echo "<br>\$row_apps = ";
echo var_dump($row_apps)."<br>";
echo "<br>\$count = ";
echo var_dump($count)."<br>";

echo "<br><br><br>";
sqlsrv_close($conn);
echo "<br>DB Connection closed.</font><br><br><br>";

?>
</body>
</html>
4

1 に答える 1

0

追加されたデバッグコード [var_dump()/print_r() など] からのテスト結果を使用して、私の dba (私のディレクターでもあります) をプッシュした後、ある種の db の問題の私の予備的な疑い (そのような具体的な証拠はありませんでしたが) が原因だったようです]。すべての原因となった問題に対する彼の返答は次のとおりです。

「何が起こったのかわかりませんが、テーブルの内容を自分の開発環境からあなたの開発環境にコピーしたところ、うまくいきました。」

私の問題で皆さんにご迷惑をおかけして申し訳ありません。Marc B と Raad が助けを求める私の嘆願にすぐに答えてくれたことに感謝しています。この質問が将来誰かに役立つことを本当に願っています.

于 2013-02-19T13:52:46.660 に答える