将oracle行值存储在php变量上

时间:2013-11-07 14:10:01

标签: php sql oracle

我在Oracle中有一个表,其中包含以下列:IMGPOSX,IMGPOSY和IDIMG。表格的每一行都有不同的X Y值位置和一个ID,用于标识此值对应于指定的ID。

例如:IDIMG = image1 > IMGPOSX = 20 IMGPOSY = 50

使用此值,然后我构建一个html地图图像并加载具有指定ID的图像,并将IMGPOSX和IMGPOSY的结果放在margin-top和margin-left css属性上。

我找到了几个如何获取行第一行的值的示例,但我不知道如何获取另一行(表有12行)

使用下一个代码,我得到每列的第一行(IMGPOSX,IMGPOSY和IDIMG),但我不知道如何获取表的其余行。如果我把row1 [1]解析器出错了。

<?php

$conn = oci_connect('TEST', 'TEST', 'ORCL');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT IMGPOSX, IMGPOSY, IDIMG FROM TESTTABLE ');

if(oci_execute($stid))

{
$row=oci_fetch_row($stid) ;

"<table border='2'>";

print"<tr><td><p>posx: </td><td>$row[0] </td></tr>";
print"<tr><td>posy: </td><td>$row[1] </td></tr>";
print"<tr><td>idimg: </td><td>$row[2] </td></tr>";

print"</table></br>";   

}

oci_free_statement($stid);
oci_close($conn);

?>

此外,我喜欢过滤idimg的抓取结果,例如,某些代码“只显示来自IDIMG='image2'的IMGPOSX和IMGPOSY。

1 个答案:

答案 0 :(得分:0)

一个粗略的例子可能是在查询中附加WHERE子句:

$id = 'image2';
$stid = oci_parse($conn, "SELECT IMGPOSX, IMGPOSY, IDIMG FROM TESTTABLE WHERE IMDIMG = $id;");

或者,使用相同的查询,您可以使用IF:

进行过滤
if ($row[2] == $id) {
//show
}

你的代码之前的句子表明你可能需要多行,所以如果你没有过滤,你会收到更多,为了得到它们你需要一个正确的提取。你当前的fetch_row,也许你需要fetch_array来接收所有值的数组。

我建议oci_fetch_assoc http://php.net/manual/en/function.oci-fetch-assoc.php,以便您可以通过他们的名字访问该列。过滤也将使用命名列。

if ($row['IDIMG'] == $id) {
//show
}

请记住以下函数说明的句子: This function is typically called in a loop until it returns FALSE

你需要这样的东西:

<?php
//all the code here
// ...
// ...
?>
    <table border="2">
<?php while ($row = oci_fetch_assoc($stid)): ?>
    <tr><td><p>posx:</p></td><td><?=$row['IMGPOSX'];?></td></tr>
    <tr><td><p>posy:</p></td><td><?=$row['IMGPOSY'];?></td></tr>
    <tr><td><p>idimg:</p></td><td><?=$row['IDIMG'];?></td></tr>
<?php endwhile; ?>
    </table><br />
<?php
oci_free_statement($stid);
oci_close($conn);
?>