Я просмотрел все остальные посты по этому вопросу, и ни одна из них не пришла точно с моей проблемой, так что здесь мы идем:
$ dbh хранит мое соединение PDO, если я делаю на него дамп var, он возвращает:
object(PDO)#1 (0) { }
Итак, я знаю, что мое соединение PDO работает.Затем я использую $ sth для хранения моего запроса:
$c = 2;
$sth = $dbh->query("SELECT * FROM table WHERE ID = " . $c);
Затем, чтобы убедиться, что это работает, я сделал:
echo $sth->rowCount();
Это возвращает значение 6. Так что я знаю, что этохватая несколько строк.Мой следующий шаг проверки моей проблемы состоял в том, чтобы выбрать одну строку, как показано ниже:
$row = $sth->fetch()
print_r($row);
Это вернуло одну строку (как и должно быть) с массивом $ row, заполненным точно так, как я ожидал (столбец)имена в качестве ключей и значения столбцов в качестве значения массива).
Таким образом, мы хороши до этого момента.После того, как я переместил $ row = $ sth-> fetch () в цикл while, мой скрипт завершается с ошибкой, которую он возвращает: Вызов функции-члена fetch () для необъекта
Вот мой цикл while:
while($row = $sth->fetch()){
//while loop stuff here
}
Я знаю, что это как-то связано с состоянием цикла, потому что даже когда я закомментирую весь материал в середине, он все равно не работает.Что я делаю неправильно?Почему это не работает?Я запутался в этом, так как он работал в прошлом со всеми PDO, которые я делал, но по какой-то причине в этом сценарии происходит сбой.
Если у кого-нибудь есть какие-либо советы или что-то, что может помочь, оно будет очень признательно.
РЕДАКТИРОВАТЬ Так как пост ninetwozero работал, я публикую свой класс и в основном все, что янужно выяснить это.
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 - это то, что используется моим файлом подключения, который включен прежде всего.Так что я знаю, что все это работает.