我在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。
答案 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);
?>