0

我在 Oracle 中有一个包含这些列的表:IMGPOSX、IMGPOSY 和 IDIMG。表格的每一行都有一个不同的 XY 值位置和一个 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'.

4

1 回答 1

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);
?>
于 2013-11-07T14:13:04.133 回答