0

@startdate、@enddate、@field1 の 3 つのパラメーターを持つストアド プロシージャがあり、次の php コードを実行しようとするとエラーが発生します。

未定義のインデックス: startdate 未定義のインデックス: enddate 未定義のインデックス: field1

<?php
$myServer = "instance_name"; // host/instance_name
$myUser = "username"; // username
$myPass = "password"; // paasword
$myDB = "databasename"; // database name
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn’t connect to SQL Server on $myServer");
$selected = mssql_select_db($myDB, $dbhandle)
or die("Couldn’t open database $myDB");

<?php
$startdate = isset($_REQUEST['startdate']) ? $_REQUEST['startdate'] : null;
$enddate = isset($_REQUEST['enddate']) ? $_REQUEST['enddate'] : null;
$field1 = isset($_REQUEST['field1']) ? $_REQUEST['field1'] : null;
?>

<form action = "thisfile.php" method = "post">
Please input startdate <input type = "text" name = "startdate" /> </br>
Please input enddate <input type = "text" name = "enddate" /> </br>
Please input field1 name <input type = "text" name = "field1" /> </br>
Please submit <input type = "submit" name = "submit" value = "submit" /> </br>
</form>

<table border = "5" id="1">

 <?php
    if (isset($startdate) && isset($enddate) ){
$query = "storedprocedure '$startdate','$enddate','field1'";
    $result = mssql_query($query);
while ($rows = mssql_fetch_array($result) ) {
echo "<tr><td>".$rows[0]."&nbsp;<td>".$rows[1]."&nbsp;
   <td>".$rows[2]."&nbsp;<td>".$rows[3]."&nbsp;
    <td>".$rows[4]."&nbsp;<td>".$rows[5]."&nbsp;";
}
}

</table>
</body>
</html>

上部にある 3 つのテキスト ボックスを探していました。テキスト ボックスに startdate、enddate、および field1 の名前を入力すると、同じページに出力が表示されます。

編集:私のストアドプロシージャは以下のようなものです:

Create procedure storedprocedure
@startdate datetime,
@enddate datetime,
@field1  varchar(50)
select date, sum(qty), sum(qty), sum(qty2), sum(qty3), sum(qty4) from table1
where date between @startdate and @enddate and field1 like @field1 + '%'
group by date
4

2 に答える 2

0

コードの一部を次のように書き直すことができます。

<?php
    $startdate = isset($_REQUEST['startdate']) ? $_REQUEST['startdate'] : null;
    $enddate = isset($_REQUEST['enddate']) ? $_REQUEST['enddate'] : null;
    $field1 = isset($_REQUEST['field1']) ? $_REQUEST['field1'] : null;
?>

enddateしかし実際には、すべてのリクエスト パラメータ (特にとfield1) が存在するかどうかを確認する必要があります。

http://php.net/manual/en/language.types.array.phpも参照してください。

于 2012-08-18T22:39:37.020 に答える
0

これを試してみませんか

if (isset($startdate) && isset($enddate) ){
$query = "storedprocedure '$startdate','$enddate','field1'";
    $result = mssql_query($query);
while ($rows = mssql_fetch_array($result) ) {
echo "<tr><td>".$rows[0]."&nbsp;<td align=right>".$rows[1]."&nbsp;
   <td align=right>".$rows[2]."&nbsp;<td align=right>".$rows[3]."&nbsp;
    <td align=right>".$rows[4]."&nbsp;<td align=right>".$rows[5]."&nbsp;";
}
}

これで通知が止まるはずです

于 2012-08-18T22:29:56.807 に答える