recherche

Maison  >  Questions et réponses  >  le corps du texte

La méthode oci_parse() renvoie la méthode d'analyse nulle

Je souhaite créer une classe qui se connecte à une base de données ORACLE à l'aide de certaines méthodes OCI.

Mais quand j'appelle la méthode Parse(), elle est nulle et ma méthode FetchArray() ne renvoie rien

Classe PHP de base de données :

class Database
{
    /**
     * @var string
     */
    private string $login;
    /**
     * @var string
     */
    private string $password;
    /**
     * @var string
     */
    private string $description;
    /**
     * @var
     */
    private $connection;
    /**
     * @var
     */
    private $stmt;

    public function __construct(string $login, string $password, string $description)
    {
        $this->login = $login;
        $this->password = $password;
        $this->description = $description;
    }


    public function Connection($character_set = null, $session_mode = null)
    {
        $this->connection = oci_connect($this->login, $this->password, $this->description, $character_set,    $session_mode);
    }

   
    public function Parse(string $sql)
    {
        $this->stmt = oci_parse($this->connection, $sql);
    }


    public function Execute()
    {
        oci_execute($this->stmt);
    }

Page de test.php :

$database = new Database($login, $pass, $descr);
        $database->Connection();
        if ($database->IsConnected()) {
            $database->Parse($sql);
            $database->Execute();
            while ($row = $database->FetchArray(OCI_BOTH) != false) {
                // Use the uppercase column names for the associative array indices
                echo $row[0] . " and " . $row['EMAIL']   . " are the same<br>\n";
                echo $row[1] . " and " . $row['NAME'] . " are the same<br>\n";
            }
            $database->Disconnection();
        } else {
            echo 'Error';
        }

La connexion à la base de données est actuellement réussie.

Méthode Get Array :

public function FetchArray($mode = null)
    {
        oci_fetch_array($this->stmt, $mode);
    }

P粉043432210P粉043432210357 Il y a quelques jours476

répondre à tous(1)je répondrai

  • P粉571233520

    P粉5712335202024-01-30 09:20:38

    Je pense avoir trouvé un problème. Dans votre condition while, vous avez peut-être manqué quelques parenthèses pour lui faire comparer le résultat de l'obtention des données de ligne au booléen false.

    $database = new Database($login, $pass, $descr);
            $database->Connection();
            if ($database->IsConnected()) {
                $database->Parse($sql);
                $database->Execute();
                while (($row = $database->FetchArray(OCI_BOTH)) != false) {
                    // Use the uppercase column names for the associative array indices
                    echo $row[0] . " and " . $row['EMAIL']   . " are the same<br>\n";
                    echo $row[1] . " and " . $row['NAME'] . " are the same<br>\n";
                }
                $database->Disconnection();
            } else {
                echo 'Error';
            }

    Cette ligne a été mise à jour :

    while (($row = $database->FetchArray(OCI_BOTH)) != false) {

    Je pense qu'il est également prudent de supprimer la conversion de type de la fonction get

    public function FetchArray($mode = null):

    répondre
    0
  • Annulerrépondre