Je comprend pas bien PDO

Mammouth du PHP | 1029 Messages

08 déc. 2006, 12:04

Bonjour,

J'esaye de suivre les tutos se trouvant sur le net, mais je ne comprend pas bien les erreurs de sortie.

J'ai la class suivante :
<?php
class motsCaches {

	function __construct()
	{

		$bdd = new PDO('sqlite:../sqlite/basedb.sqlite');

		$sql ="SELECT motssolution FROM motsphrase";
		$result = $bdd->query($sql);
		$laTotal = $result->fetchAll();

		echo"<pre>";
		var_dump($laTotal);
		echo"</pre>";

	}
}


?>

Puis j'instancie cette class
<php
$objet = new motsCaches();
?>
J'obtient l'erreur suivante

Code : Tout sélectionner

Fatal error: Call to a member function fetchAll() on a non-object
Pourtant j'ai bien Pdo, installer par Pecl sur php 5.1

Merci de votre aide
L'expérience est la somme de toutes nos erreurs.

ViPHP
ViPHP | 1961 Messages

08 déc. 2006, 15:16

Bonjour,

Tu es sur que ta connexion fonctionne ?
Tu ne le testes même pas.

Avant de créer ta propre class, commence par le faire de façon procédurale
<?php
try{
   $bdd = new PDO('sqlite:../sqlite/basedb.sqlite', '', '');
}
catch (PDOException $e){
   die($e->getMessage());
}

$sql ="SELECT motssolution FROM motsphrase";
if(($result = $bdd->query($sql)) !== false){
   $laTotal = $result->fetchAll();
   echo"<pre>";
   var_dump($laTotal);
   echo"</pre>";
}
else{
   die('ERR_SQL');
}
?>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1029 Messages

08 déc. 2006, 15:26

Salut,

J'avais tester auparavant ma connection.

En suivant ta proposition, j'obtient 'ERR_SQL'

Je ne comprend pas pourquoi il refuse de faire l'action?
L'expérience est la somme de toutes nos erreurs.

ViPHP
ViPHP | 1961 Messages

08 déc. 2006, 15:32

Re,
Ajoute ces lignes, elles te donneront plus de précisions.
else{
   echo"<pre>"; 
   print_r($bdd->errorInfo());
   echo"</pre>"; 
   die('ERR_SQL');
}
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1029 Messages

08 déc. 2006, 15:51

heu :cry:

Code : Tout sélectionner

Array ( [0] => HY000 [1] => 26 [2] => file is encrypted or is not a database )
je confirme que ma base existe.

Sur le net il parle d'une version spécial sqlite3 pour pdo?
L'expérience est la somme de toutes nos erreurs.

ViPHP
ViPHP | 1961 Messages

08 déc. 2006, 15:55

Re,

Il y a actuellement deux versions majeures de SQLite, la 2 et la 3

Les drivers de connexion ne sont pas les mêmes

Pour la 2 $dns = 'sqlite2:.....'
Pour la 3 $dns = 'sqlite:.....'

Le message d'erreur te dis que ton fichier est crypté ou bien c'est pas un fichier base de données (SQLite).
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1029 Messages

08 déc. 2006, 16:08

Oui effectivement j'ai le driver pour Pdo_Sqlite3, mais je possède sqlite 2.8, je vais voir comment upgrader ce sqlite vers le 3.

Merci de ton aide.

MaitrePylos
L'expérience est la somme de toutes nos erreurs.

ViPHP
ViPHP | 1961 Messages

08 déc. 2006, 16:15

Re,
Tu utilises quel OS ? (@Albat : Pas de tibia, sinon c'est la barre de ...)
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1029 Messages

08 déc. 2006, 16:25

Je suis sous Dapper/Server.

Et il n'ont pas encore fais la mise à jour vers Php 5.2
L'expérience est la somme de toutes nos erreurs.

ViPHP
ViPHP | 1961 Messages

08 déc. 2006, 16:30

Je suis sous Dapper/Server.

Et il n'ont pas encore fais la mise à jour vers Php 5.2
Je ne connais pas du tout!, je savias même pas que ça existait.

Pour revenir à ton PB, change le DSN, essaie ceci
$bdd = new PDO('sqlite2:../sqlite/basedb.sqlite', '', '');
Si ça ne marche pas tu devras utiliser, soit les fonctions clasiques (sqlite_*) très proches de celles de MySQL ou bien les class SQLite.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1029 Messages

12 déc. 2006, 16:48

Effectivement, je n'arrive pas à utiliser le PDO, pour sqlite, parce que Pear/Pecl ne travaille que sur sqlite3.

Bon ben j'attendrais une mise à jour majeur de mon OS pour pouvoir apprendre.

Merci de ton aide
L'expérience est la somme de toutes nos erreurs.