Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour
je tente une connexion pour l'authentification sur une base oracle
mon Zend_Auth_Adapter_DbTable me produit
SELECT DISTINCT usr.*, usr_pwd = 'MyPass' AS zend_auth_credential_match FROM usr
Mais j'obtiens une exception:
The supplied parameters to Zend_Auth_Adapter_DbTable failed to produce a valid sql statement, please check table and column names for validity.
avec mon outil SQL je constate que Oracle ne supporte pas
usr_pwd = 'MyPass' AS zend_auth_credential_match
il plante sur le "="
si je commente la fin de la ligne la requête s'exécute correctement
merci de votre aide
A+JYT
Hors ligne
Hello,
SELECT usr.*, (CASE WHEN usr_pwd = 'MyPass' THEN 1 ELSE 0 END) AS "zend_auth_credential_match" FROM utilisateurs WHERE (usr_login = 'moi')
C'est le code normalement produit pour Oracle en 1.6.
A+
Hors ligne
Yo mais comment je fais ça en 1.0.4 ???
ça veux dire que Zend_Auth ne fonctionnait pas en 1.0.4 ??
car si je regarde le source
$credentialExpression = new Zend_Db_Expr( $this->_zendDb->quoteInto( $this->_credentialColumn . ' = ' . $this->_credentialTreatment, $this->_credential ) . ' AS zend_auth_credential_match' );
merci
A+JYT
Dernière modification par sekaijin (28-08-2008 18:02:04)
Hors ligne
Hello,
Yo mais comment je fais ça en 1.0.4 ???
ça veux dire que Zend_Auth ne fonctionnait pas en 1.0.4 ??
Exactement. J'avais posté sur une issue à l'époque (http://framework.zend.com/issues/browse/ZF-1509).
Avec http://framework.zend.com/issues/browse/ZF-2236.
A+
Dernière modification par mikaelkael (28-08-2008 18:30:01)
Hors ligne
Merci j'ai ajouté à mon projet class Fast_Auth_Adapter_DbTable extends Zend_Auth_Adapter_DbTable
dans laquelle j'ai redéfinis la requête
A+JYT
Hors ligne
Bonjour,
J'utilise actuelle ment la version 1.7.1 et j'obtiens la même erreur :
Fatal error: Uncaught exception 'Zend_Auth_Adapter_Exception' with message 'The supplied parameters to Zend_Auth_Adapter_DbTable failed to produce a valid sql statement, please check table and column names for validity.
Si j'affiche la requête générée, j'obtiens :
SELECT UTILISATEUR.*, (CASE WHEN PWD_USER = 'TEST' THEN 1 ELSE 0 END) AS "zend_auth_credential_match" FROM UTILISATEUR WHERE (COD_USER = 'TEST')
Donc la requête semble bien formée, et se lance dans mon client Oracle...
Je ne vois pas d'où peut venir le problème...
Auriez vous une idée?
J'utilise l'adapter Oracle, et j'arrive a former des requêtes dans mes contrôleurs.
Merci de votre aide.
Hors ligne
Hello,
J'utilise aussi Oracle avec la 1.7.1 et je n'ai pas de problème avec Zend_Auth_Adapter_DbTable. Je ne comprends pas, surtout que cela fonctionne dans ton client.
Tu peux modifier Zend/Auth/Adapter/DbTable.php, remplaces (ligne 392 à 394) :
throw new Zend_Auth_Adapter_Exception('The supplied parameters to Zend_Auth_Adapter_DbTable failed to ' . 'produce a valid sql statement, please check table and column names ' . 'for validity.');
par
throw new Zend_Auth_Adapter_Exception('The supplied parameters to Zend_Auth_Adapter_DbTable failed to ' . 'produce a valid sql statement, please check table and column names ' . 'for validity.' . $e->getMessage());
Et regardes à quoi correspond exactement ton exception.
Sinon pour les utilisateurs d'Oracle, j'ai patché une dizaine d'issues pour la sortie de la 1.7.2 la semaine prochaine.
A+
Dernière modification par mikaelkael (17-12-2008 10:46:08)
Hors ligne
Merci pour cette réponse rapide.
J'ai mis aussi la requête:
throw new Zend_Auth_Adapter_Exception('The supplied parameters to Zend_Auth_Adapter_DbTable failed to '
. 'produce a valid sql statement, please check table and column names '
. 'for validity. Requête : '.$dbSelect->__toString(). '. Exception :'. $e->getMessage());
Voici mon erreur :
Uncaught exception 'Zend_Auth_Adapter_Exception' with message 'The supplied parameters to Zend_Auth_Adapter_DbTable failed to produce a valid sql statement, please check table and column names for validity. Requ괥 : SELECT UTILISATEUR.*, (CASE WHEN PWD_USER = 'TEST' THEN 1 ELSE 0 END) AS "zend_auth_credential_match" FROM UTILISATEUR WHERE (COD_USER = 'TEST'). Exception :911 ORA-00911: caractere non valide SELECT UTILISATEUR.*, (CASE WHEN PWD_USER = 'TEST' THEN 1 ELSE 0 END) AS "zend_auth_credential_match" FROM UTILISATEUR WHERE (COD_USER *= 'TEST');'
Hors ligne
Hello,
Je ne comprends pas le caratère invalide. Tu es en ZF1.7.1.
- adaptateur "oracle" ou "pdo_oci" ?
- quelle version d'Oracle ?
-as-tu modifié le fichier Zend/Auth/Adapter/DbTable.php ?
- comment gères-tu l'appel de Zend_Auth_Adapter_DbTable ?
A+
Hors ligne
Oulà, pardon, jai trouvé l'erreur, j'avais ajouté un ';' à la fin... C'était quand j'avais une autre erreur lorsque j'essayais de faire fonctionner un adapter ODBC, je pensais que c'était dû à ça, mais je n'ai pas remis à la normale en repassant à Oracle.
Désolé.
Dernière modification par Fuggerbit (17-12-2008 11:09:07)
Hors ligne