Archief - PHP: Sqlite & PDO probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bubbling Zombie

Legacy Member
Wel, eerst en vooral eerst de code (niet echt proper, maar kom, 't is een probeerseltje)

PHP:
function getAllSpecialities(){
	try{	
		$dbh = new PDO('sqlite:test.sqlite');
		$result = $dbh->query("select * from tblspeciality");
		echo $result->rowCount();
		$dbh = null;
	} 
	catch (PDOException $e)	{
		print( $e->getMessage() . "<br />\n");
		die();
	}
}

nu, wat krijg ik als ik dit uitvoer?

PHP:
Fatal error: Call to a member function rowCount() on a non-object in /home/zombie/public_html/warm/scripts/specialityDAO.php on line 8

Nu, een paar dingen die ik al gechecked heb:

-> de juiste dingen zijn in php gecompileerd (maw, er is wel degelijk support voor pdo en sqlite)
-> het is versie 3 van sqlite, dus de string om te connecteren lijkt mij vrij juist. De database staat in dezelfde folder als het script. Krijg trouwens dezelfde error als een absoluut path gebruik.
-> de query is juist (als ik hem uitvoer in de sqlite command prompt krijg ik het beoogde resultaat)
-> ik krijg geen "driver not found" errors, wat wilt zeggen (denk ik) dat hij de database wel opent.

iemand suggesties?

hacku

Legacy Member
Probeer $result->fetchColumn() eens.

For most databases, PDOStatement::rowCount() does not return the number of rows affected by a SELECT statement. Instead, use PDO::query() to issue a SELECT COUNT(*) statement with the same predicates as your intended SELECT statement, then use PDOStatement::fetchColumn() to retrieve the number of rows that will be returned. Your application can then perform the correct action.

Bubbling Zombie

Legacy Member
Zou het misschien hier kunnen aan liggen <_<. Na $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); te definieren in m'n code kreeg ik namelijk die error.

edit: hacku, dat van jou heb ik geprobeerd maar haalt niets uit. 't is gewoon een nullobject wat ik daar krijg.

killgore

Legacy Member
hacku zei:
Probeer $result->fetchColumn() eens.
zijn $result was een null object, daar lag het probleem dus niet.

Zijn filebase van sqlLite is dus gewoon niet stabiel met die in zijn php build ;).

Schietschijf

Legacy Member
hacku zei:
Kan je even wat meer (relevante) code posten?

dat is alles van zijn code...

volgens mij is da relevant genoeg, tenzij ge php.ini wilt hebben en httpd.conf...

hacku

Legacy Member
Eh nee, want een paar posts later spreekt hij over

Na $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); te definieren in m'n code kreeg ik namelijk die error.

Lijkt me dat er meer code is?

killgore

Legacy Member
Nee, ik had hem gezegd die toe te voegen zodat ie meer info zou krijgen over de fout binnen zen query :p, zijn code was enkel dat hoor ;).

Bubbling Zombie

Legacy Member
Danku jongens :)

ik ga maar naar mysql gaan denk ik <_<, 't zit em blijkbaar in een php module die een beetje oud is :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan