cleanup and better test queryWalk()

This commit is contained in:
Sergey Tsalkov
2021-06-25 18:23:59 +00:00
parent 5108480e03
commit aad5cbbbac
2 changed files with 32 additions and 5 deletions

View File

@@ -821,10 +821,10 @@ class MeekroDB {
$this->runHook('run_success', $hookHash);
}
if (!($result instanceof MySQLi_Result)) return $result; // no results returned?
if ($opts_raw) return $result;
if ($opts_walk) return new MeekroDBWalk($db, $result);
if (!($result instanceof MySQLi_Result)) return $result; // query was not a SELECT?
if ($opts_raw) return $result;
$return = array();
if ($opts_fullcols) {
@@ -938,18 +938,21 @@ class MeekroDBWalk {
protected $result;
protected $freed;
function __construct(MySQLi $mysqli, MySQLi_Result $result) {
function __construct(MySQLi $mysqli, $result) {
$this->mysqli = $mysqli;
$this->result = $result;
}
function next() {
// $result can be non-object if the query was not a SELECT
if (! ($this->result instanceof MySQLi_Result)) return;
if ($row = $this->result->fetch_assoc()) return $row;
else $this->free();
}
function free() {
if ($this->freed) return;
if (! ($this->result instanceof MySQLi_Result)) return;
$this->result->free();
while ($this->mysqli->more_results()) {

View File

@@ -12,8 +12,32 @@ class WalkTest extends SimpleTest {
$this->assert(count($results) == 8);
$this->assert($results[7]['username'] == 'vookoo');
}
function test_2_walk_empty() {
$Walk = DB::queryWalk("SELECT * FROM accounts WHERE id>100");
function test_2_walk_stop() {
$results = array();
while ($row = $Walk->next()) {
$results[] = $row;
}
$this->assert(count($results) == 0);
}
function test_3_walk_insert() {
$Walk = DB::queryWalk("INSERT INTO profile (id) VALUES (100)");
$results = array();
while ($row = $Walk->next()) {
$results[] = $row;
}
$this->assert(count($results) == 0);
DB::query("DELETE FROM profile WHERE id=100");
}
function test_4_walk_incomplete() {
$Walk = DB::queryWalk("SELECT * FROM accounts");
$Walk->next();
unset($Walk);