[PHP-users 24185] Oracle接続時のWarning: ociexecute(): と Warning: ocifetch(): について
Iso, Toshitaka
toshitaka.iso @ hp.com
2005年 1月 21日 (金) 12:49:40 JST
お世話になっております。
ORACLE接続について質問させてください。
以下のようなPHPのコードがあり、
hoge.php画面表示時に
(1) Warning: ociexecute(): OCIStmtExecute: ORA-00936: missing expression in /var/www/html/test/hoge.php on line 37
→ 「OCIExecute($sql_RANK);」の箇所
(2) Warning: ocifetch(): OCIFetch: ORA-24374: define not done before fetch or execute and fetch in /var/www/html/test/hoge.php on line 51
→ 「while(OCIFetch($sql_RANK))」の箇所
というエラーが二つ表示されます。
そして、FORMの「表示」ボタンを押すと画面描画がエラー無く表示されますが、
IEを閉じて、再度表示すると同じエラーが表示されます。。。
ためしにFORMからの値を関数「rank_list」に渡さず、
直接「rank_rist(45,'S')」といった感じに入れるとエラー無く画面表示されます。
このエラーの回避方法・確認ポイントをご存知の方がおられましたら、
なにとぞご教授いただければと思います。
以上です。
【PHPのバージョン】
PHP 4.3.10
【Oracleのバージョン】
Oracle9.2.0.4
============== hoge.php ==============
<center>
<form method=post action=hoge.php>
<select name="AAAA">
<option value="38">38</option>
<省略>
<option value="45">45</option>
<option value="46">46</option>
</select></td>
番目を<input type=submit value="表示">
</form>
</center>
<?php
$no=null;
if (isset($HTTP_POST_VARS['AAAA']))
{
$no = $HTTP_POST_VARS['AAAA'];
}
rank_list($no,'S'); ← FORMの値を
function rank_list($no,$id)
{
// Oracleとの接続
$conn = OCILogon("user_id", "password", "DBNAME");
// SQL文のparse
$sql_RANK = OCIParse($conn,"select * from rank where NO=" . $no . "and ID='" . $id . "'");
// SQL文の実行
OCIExecute($sql_RANK);
$ncols = OCINumCols($sql_RANK); ← (1)のエラー発生箇所
echo "<table border>";
echo "<TR bgcolor=#fffccc>";
for ( $i = 1; $i <= $ncols; $i++ )
{
$column_name = OCIColumnName($sql_RANK,$i);
echo "<TH>" . $column_name . "</TH>";
}
echo "</TR>";
// データのFetch
while(OCIFetch($sql_RANK)) ← (2)のエラー発生箇所
{
echo "<TR>";
for ( $i = 1; $i <= $ncols; $i++ )
{
$column_name = OCIColumnName($sql_RANK,$i);
// データの表示
echo "<TD><CENTER>" . OCIResult($sql_RANK, $column_name) . "</CENTER></TD>";
}
echo "</TR>";
}
echo "</TABLE>";
echo "<br><br><br>";
OCIFreeStatement($sql_RANK);
// Oracleから切断
OCILogoff($conn);
}
?>
PHP-users メーリングリストの案内