Печать таблицы oracle BD в PHP


у меня есть сомнение в том, что я хочу вытащить таблицу в html и распечатать все данные из таблицы в oracle, но мне это не удается.

<?php

function conectar_Oracle($usuario, $pass, $cadenaconexion)
{
    // Conectar con Oracle:
    $conexion = oci_connect($usuario, $pass, $cadenaconexion) or die("Error al conectar : " . oci_error());

    return $conexion;
}

$conexion = conectar_Oracle(
    "system",
    "password",
    "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SID=puvidb)))"
);

$sql = "SELECT * FROM GENERAL.PERSONAGENERAL ORDER BY 'PAGE_ID'";
$filas = 0;

$stmt = oci_parse($conexion, $sql);
$ok   = oci_execute($stmt);
$obj = oci_fetch_object($stmt);
echo $obj->PEGE_ID . " - " . $obj->PEGE_DOCUMENTOIDENTIDAD . " - " . $obj->PEGE_MAIL . "<br />";
?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <table border="1">
        <thead>
            <tr>
                <th>#</th>
                <th>Codigo</th>
                <th>Producto</th>
                <th>Stock</th>
            </tr>
        </thead>
        <tbody>
            <?php
            $i = 1;
            foreach ($obj as $dato) {
            ?>
                <tr>
                    <td><?php echo $i++; ?></td>
                    <td><?php echo $obj->PEGE_ID; ?></td>
                    <td><?php echo $obj->PEGE_DOCUMENTOIDENTIDAD; ?></td>
                    <td><?php echo $obj->PEGE_MAIL; ?></td>
                </tr>
            <?php
            }
            ?>
        </tbody>
        </div>
    </table>
</body>

</html>

Ну, мне удается принести мне данные, когда я указываю его, но он не приносит мне всю table, это означает, что соединение все правильно, я очень привык к подключению к MySQL, но у oracle было много проблем.

introducir la descripción de la imagen aquí

Вот это результат, если вы понимаете меня он повторяет данные и не приносит мне другие данные, я должен сказать, что этот BD имеет около 2500 записей

 1
Author: Andred Garcia Martin, 2020-12-01

1 answers

Ошибка заключается в том, что foreach неправильно сделан, и поскольку переменные, которые были определены там, не работают. код будет выглядеть так.

<?php

$conn = oci_connect(
    "system",
    "password",
    "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SID=puvidb)))"
);
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$sql = 'SELECT * FROM GENERAL.PERSONAGENERAL WHERE PEGE_ID > 12000 AND PEGE_ID < 12100';
$stid = oci_parse($conn, $sql);
oci_execute($stid);

$sql = 'SELECT * FROM ACADEMICO.ESTUDIANTEPENSUM WHERE ';





?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <table border="1">
        <thead>
            <tr>
                <th>#</th>
                <th>Codigo</th>
                <th>Producto</th>
            </tr>
        </thead>
        <tbody>
            <?php
            $i = 1;
            while (oci_fetch($stid)) {

            ?>
                <tr>
                    <td><?php echo $i++; ?></td>
                    <td><?php echo oci_result($stid, 'PEGE_ID'); ?></td>
                    <td><?php echo oci_result($stid, 'PEGE_DOCUMENTOIDENTIDAD'); ?></td>
                </tr>
            <?php
            }
            oci_free_statement($stid);
            oci_close($conn);

            ?>
        </tbody>
        </div>
    </table>
</body>

</html>
 0
Author: Andred Garcia Martin, 2020-12-02 05:35:32