我看着這所有其他職位,他們沒有想出什麼我的問題是,所以在這裏,我們去:PDO - 調用一個非對象的成員函數fetch()?
$胸徑商店我的PDO連接,如果我做一個變種轉儲就可以了,它返回:
object(PDO)#1 (0) { }
所以我知道我的PDO連接正在工作。然後我用$某物握住我的查詢:
$c = 2;
$sth = $dbh->query("SELECT * FROM table WHERE ID = " . $c);
然後,以確保這工作我做:
echo $sth->rowCount();
返回的值6。所以,我知道這是抓住了一些行。我檢查我的問題的下一步是獲取單行如下所示:充滿到底我希望它(列名與$ row數組
$row = $sth->fetch()
print_r($row);
這回單行(因爲它應該)鍵和列值作爲數組值)。
所以我們很好。一旦我將$ row = $ sth-> fetch()移入while循環,我的腳本就會失敗,返回的錯誤是:調用非對象的成員函數fetch()
這是我的while循環:
while($row = $sth->fetch()){
//while loop stuff here
}
我知道它與循環的條件有關,因爲即使我在中間註釋掉所有的東西,它仍然不起作用。我究竟做錯了什麼?爲什麼這不工作?我對這一點感到困惑,因爲它在過去與我所做的所有PDO一起工作,但由於某種原因,它在這個腳本中失敗了。
如果任何人有任何提示或東西,可以幫助它將不勝感激。
編輯由於九twozero的職位工作,我發佈我的課程,基本上我得到這個想法的一切。
class html_elements {
var $units;
var $useMaps;
var $cid;
var $uid;
var $companyMoney;
var $currCity;
var $terminals;
var $termLocs;
var $cityArray;
var $cargoArray;
var $cargo;
var $tid;
var $truckArray;
var $load;
var $cityID;
var $cargoID;
var $xp;
var $gasPrice;
var $warning;
function __construct($u, $maps, $c, $userID, $cMoney, $dbh, $city, $tid, $xp){
$this->units = $u;
$this->useMaps = $maps;
$this->cid = $c;
$this->uid = $userID;
$this->companyMoney = $cMoney;
$this->currCity = $city;
$this->terminals = array();
$this->termLocs = array();
$this->cityArray = array();
$this->cargoArray = array();
$this->cargo = array();
$this->tid = $tid;
$this->truckArray = array();
$this->load = 0;
$this->cityID = array();
$this->cargoID = array();
$this->xp = $xp;
$this->gasPrice = 0;
$sth = null;
$sth = $dbh->query("SELECT * FROM tblCTerminals WHERE companyID = " . $c);
//THIS LOOP FAILS
while($row = $sth->fetch()){
$this->termLocs[] = $row['Location'];
}
}
然後在有我的類文件,另一個文件包含在它是:
$h = new html_element($u->get_units(), $u->get_maps(), $u->get_company(), $u->get_user_id(), $c->get_money(), $dbh, $u->get_city(), $u->get_truck_id(), $u->get_xp());
每個那些干將的工作,我對它們進行測試。另外,$ dbh就是我之前使用的連接文件。所以我知道所有這些都在起作用。
這將是巨大的,如果你可以發佈一個鏈接到一個小的PHP腳本重現問題(和SQLite內存數據庫或左右)。沒有冒犯,但我的猜測是查詢以某種方式失敗,並且你忘記打開[異常錯誤處理](http://php.net/manual/en/pdo.error-handling。php) – phihag
我有錯誤處理,查詢工作,直到我把它放在一個while循環。此外與ninetwozero的職位,它正在工作。所以我發佈我的課程和一切,以便我們可以得出這個想法。 – jefffan24
我使用neew代碼更新了以前的文章,您可以使用它代替while循環。讓我知道它是否按計劃運作,否則我們必須以不同的方式處理它! – ninetwozero