我在一個類中這裏有這樣的代碼:麻煩與庫MySQLi和while循環
function getRolePerms($role)
{
if (is_array($role))
{
$roleSQL = "SELECT * FROM `role_perms` WHERE `roleID` IN (" . implode(",",$role) . ") ORDER BY `ID` ASC";
} else {
$roleSQL = "SELECT * FROM `role_perms` WHERE `roleID` = " . floatval($role) . " ORDER BY `ID` ASC";
}
var_dump($roleSQL);
$this->database->dbquery($roleSQL);
$perms = array();
while($row = $this->database->result->fetch_assoc())
{
$pK = strtolower($this->getPermKeyFromID($row['permID']));
var_dump($pK);
if ($pK == '') { continue; }
if ($row['value'] === '1') {
$hP = true;
} else {
$hP = false;
}
$perms[$pK] = array('perm' => $pK,'inheritted' => true,'value' => $hP,'Name' => $this->getPermNameFromID($row['permID']),'ID' => $row['permID']);
}
return $perms;
}
後續代碼var_dump()爲$ roleSQL是:
SELECT * FROM role_perms WHERE roleID = 1 ORDER BY ID ASC
和$克魯格曼:
Admin
在數據庫中直接運行查詢時,我得到一個8行的結果。 爲什麼循環無法識別多行。 另外,如果我添加語句:
var_dump($this->database->result->fetch_assoc());
它丟棄第一排的陣列,然後循環就在第二排。
我真的百思不得其解,
請幫
$ pK的每個值都會不同。另外,循環中有var_dump(),理論上應該執行8次,但事實並非如此。 – FraserK 2011-03-20 00:19:47
@FraserK:然後顯然這個錯誤是'$ this-> database-> result'所做的事情,你不給。 – Jon 2011-03-20 00:21:35
'$ this-> database-> result'是一個mysqli對象。就像我上面所說的,我可以調用'var_dump($ this-> database-> result-> fetch_assoc());'8次,它會轉儲8行。但循環不會像它應該工作,我知道循環應該工作,因爲此代碼'while($ row = $ database-> result-> fetch_assoc())print_r($ row); '在另一頁上完美地工作。 :) – FraserK 2011-03-20 00:37:20