Heim > Fragen und Antworten > Hauptteil
Ich möchte eine Klasse erstellen, die mithilfe einiger OCI-Methoden eine Verbindung zu einer ORACLE-Datenbank herstellt.
Aber wenn ich die Parse()-Methode aufrufe, ist sie null und meine FetchArray()-Methode gibt nichts zurück
Datenbank-PHP-Klasse:
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); }
Testseite.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'; }
Die Datenbankverbindung ist derzeit erfolgreich.
Array-Methode abrufen:
public function FetchArray($mode = null) { oci_fetch_array($this->stmt, $mode); }
P粉5712335202024-01-30 09:20:38
我想我发现了一个问题。在您的 while 条件下,您可能错过了几个括号,以使其将获取行数据的结果与布尔值 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'; }
此行已更新:
while (($row = $database->FetchArray(OCI_BOTH)) != false) {
我认为从获取函数中删除类型转换也是安全的
public function FetchArray($mode = null):