Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/04/2007, 10h43   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2005
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 52
Points : 11
Points : 11
Par défaut problème avec SQL server 7 'SQLSTATE[HY000]: General error: 10007

Bonjour,

Je découvre actuellement le zend framework ainsi que ses exceptions.
Voici ma classe de modèle que j'essaye de mettre en place.
Je tiens à dire que je me suis inspiré du tutorial http://www.kitpages.fr/zf_tutorial.html pour les choses qui vont suivre.
C'est une classe qui
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
require_once('Zend/Db.php');
 
	class ModeleMateriel
	{
		private function getZendDb()
		{
		      $params = array(
                            'host'     => DB_SERVER ,
                            'username' => DB_USER ,
                            'password' => DB_PASSWORD ,
                            'dbname'   => DB_NAME
                       );
                       return Zend_Db::factory(DB_TYPE,$params);
	        }
 
		public function selectionUnite()
		{
 
			$db = $this->getZendDb();
 
			$select = $db->select();
 
			$select->from("t_unite");
 
			return $db->fetchAll($select);
		}
	}
avec toute les constantes définies dans index.php (à la racine).

J'utilise SQL server 7. Et pour moi DB_TYPE est définie par "pdo_mssql".
J'ai par ailleur chargé dans wamp5 les exetenssions :
php_mssql , php_pdo , php_pdo_mssql

j'utilise php 5.2 , zend framework 0.9.2 beta , sql server 7.

dans mon controller j'utilise la classe comme ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
require_once('models/ModeleMateriel.php');
	class AjouterMaterielController extends Zend_Controller_Action
	{
		public function init()
		{
			//On initialise ici, si necessaire.
		}
 
		public function ajouterMaterielAction()
		{
			echo "dans AjouterMaterielController::ajouterMaterielAction()<br/>";
 
			$modele_materiel = new ModeleMateriel();
			$all = $modele_materiel->selectionUnite();
			foreach($all as $colonne)
				echo $colonne["id_unite"] . ' ' . $colonne["code_unite"] . ' ' . $colonne["libelle_unite"];
		}
	}
Mais quelque chose se passe mal car j'ai l'exception suivante :
Code :
1
2
3
4
5
6
7
8
9
 
Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' with message 'SQLSTATE[HY000]: General error: 10007 Ligne 2 : Syntaxe incorrecte vers '.'. [10007] (severity 5) [(null)]' in C:\wamp\www\library\Zend\Db\Adapter\Pdo\Abstract.php:177 Stack trace:
#0 C:\wamp\www\library\Zend\Db\Adapter\Abstract.php(331): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Select), Array)
#1 C:\wamp\www\visite\mvc\models\ModeleMateriel.php(31): Zend_Db_Adapter_Abstract->fetchAll(Object(Zend_Db_Select))
#2 C:\wamp\www\visite\mvc\controllers\AjouterMaterielController.php(17): ModeleMateriel->selectionUnite()
#3 C:\wamp\www\library\Zend\Controller\Action.php(501): AjouterMaterielController->ajouterMaterielAction()
#4 C:\wamp\www\library\Zend\Controller\Dispatcher\Standard.php(214): Zend_Controller_Action->dispatch('ajoutermateriel...')
#5 C:\wamp\www\library\Zend\Controller\Front.php(753): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#6 C:\wamp\www\visite\inde in C:\wamp\www\library\Zend\Db\Adapter\Pdo\Abstract.php on line 177
J'espère que quelqu'un pourra m'aider car je ne vois vraiment pas comment résoudre le problème.
websurfeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 16h43   #2
Candidat au titre de Membre du Club
 
Inscription : juin 2005
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 52
Points : 11
Points : 11
Voilà je me réponds !!

C'est en fait un problème d'execution de requete !! Qui l'eut cru ?

Je tiens à signaler au passage que le message de l'exeception n'est pas du tout explicite.

En fait voilà la problème : quand vous faites une requete avec l'objet Zend_Db_Select de la manière suivante :
Code :
1
2
3
 
$select = $db->select();
$select->select("ma_table",array("colonne1") );
Zend_Db_Select transforme ce que vous lui avez passé en :
Code :
1
2
 
SELECT "ma_table"."colonne1" FROM "ma_table";
Or MSSQL server 7 (c'est celui que nous utilisons) n'aime pas du tout ce genre de requete, il les préfere sans quote double.

Donc la 1ère solution consiste à faire un remplacement des quotes doubles par rien avant d'executer la requete.

La 2ème consiste à activer l'option quoted identifier sur la table que vous souhaitez requeter dans MS SQL server 7.

Voilà en espérant que cela puisse aider quelqu'un. (je suis peut-être le seul à utiliser MS SQL server )
websurfeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h37.


 
 
 
 
Partenaires

Hébergement Web