Недавно я начал изучать PHP и Oracle SQL.
Я пытаюсь получить список всех строк из таблицы Department
, вызвав функцию selectAllDepartments
, используя:
@oci_fetch_all($statement, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW);
Вышеприведенный оператор выполняется и возвращает двумерный массив $res
правильной длины. Но к сожалению для меня пусто.
Я пытался echo
$res
внутри функции, повторяя ее следующим образом:
for ($x = 0; $x < count($res); $x++) {
for ($y = 0; $y < count($res[$x]); $y++) {
echo $res[$x][$y];
echo "<br>";
}
}
вот класс с функцией:
<?php
class DatabaseHelper
{
const username = '***';
const password = '***';
const con_string = 'lab';
// Since we need only one connection object, it can be stored in a member variable.
// $conn is set in the constructor.
protected $conn;
// Create connection in the constructor
public function __construct()
{
try {
// Create connection
$this->conn = @oci_connect(
DatabaseHelper::username,
DatabaseHelper::password,
DatabaseHelper::con_string
);
//check if the connection object is != null
if (!$this->conn) {
die("DB error: Connection can't be established!");
}
} catch (Exception $e) {
die("DB error: {$e->getMessage()}");
}
}
public function __destruct()
{
// clean up
@oci_close($this->conn);
}
public function selectAllDepartments($deptID, $deptName)
{
if ($deptID && ($deptID != '')) {
$sql = "SELECT * FROM Department WHERE departmentID like '" . $deptID . "'";
} elseif ($deptName && ($deptName != '')) {
$sql = "SELECT * FROM Department WHERE departmentName like " . $deptName . "";
} else {
$sql = "SELECT * FROM Department";
}
$statement = @oci_parse($this->conn, $sql);
@oci_execute($statement);
@oci_fetch_all($statement, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW);
echo $sql;
//clean up;
@oci_free_statement($statement);
for ($x = 0; $x < count($res); $x++) {
for ($y = 0; $y < count($res[$x]); $y++) {
echo $res[$x][$y];
echo "<br>";
}
}
return $res;
}
}
Я предполагаю, что я либо неправильно анализирую данные, либо что-то не так с моим соединением. Если так, то как это можно проверить?