Dzień dobry,
W efekcie następującego kodu:
var_dump($db);
$result = queryDatabase("SELECT region_id, region_name FROM regions ORDER BY
region_name ASC");
while ($row = $result->fetch_row()) {
$regions[$row[0]] = $row[1];
}
gdzie:
function queryDatabase($sql) {
global $db, $inTransaction;
$result = $db->query($sql);
var_dump($result);
if ($db->errno) {
if ($inTransaction) {
$db->rollback();
$db->autocommit(true);
}
error(ERRMSG_DATABASE_OPERATION_FAILED);
}
return $result;
}
dostaję błąd:
object(mysqli)#1 (0) { } NULL
Fatal error: Call to a member function fetch_row() on a non-object in
/home/xyz/public_html/include/database.inc.php on line 115
Czyli $db->query() zwraca null. Nie wiem dlaczego. Tabela wygląda tak:
CREATE TABLE `ogloszenia`.`regions` (
`region_id` int(11) NOT NULL COMMENT 'Identyfikator wojewodztwa',
`region_name` varchar(20) NOT NULL COMMENT 'Nazwa wojewodztwa',
PRIMARY KEY (`region_id`),
KEY `index_region_name` (`region_name`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=latin2 COMMENT='Wojewodztwa';
Ponadto używam funkcji:
function openDatabase() {
global $db;
$db = new mysqli('localhost', MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
if (!empty($db->connect_error)) {
$db = null;
return false;
}
$db->query('SET NAMES latin2');
$db->query('SET CHARACTER SET latin2 COLLATE latin2_polish_ci');
$db->autocommit(true);
register_shutdown_function('closeDatabase');
return true;
}
Nie rozumiem dlaczego $result == NULL. Jest tak od niedawna, wcześniej wszystko było OK. Nic w bazie nie zmieniałem.
Byłbym wdzięczny za pomoc.
Czy użycie PDO albo PEAR DB zamiast mysqli mogłoby pomóc?