Salut,

Le 28/09/2014 11:21, Mélissa Djebel a écrit :
> 
> Salut Johan,
> 
> La solution est ici:
> http://www.geeksww.com/tutorials/database_management_systems/mysql/tips_and_tricks/how_to_check_mysql_version_number.php

Pour MySQL, peut-être... Mais ça ne fonctionne pas du totu pour SQLite,
et sous Postgres, la chaîne renvoyée est bien différente.

> Il faut faire soit :
> SELECT version();
> soit
> SELECT @@version;
> 
> Par contre, j'ai été bien incapable de transformer ça en requête
> Zend_Db, je ne comprends pas ce framework, c'est juste ....

Faut voir du côté des alternatives alors :D

> Ca devrait ressembler à quelque chose comme ça:
>         try {
>             $select = $zdb->select()->columns(array('version' =>
> '@@version'));
> [...]

La méthode select() (tout comme ses homologues) n'est pas prévue pour
exécuter du SQL directement (cf.
http://framework.zend.com/manual/2.3/en/modules/zend.db.sql.html).

La solution dans ce cas, c'est de lancer une requête SQL standard, ce
que permet Zend_Db (ce qui est à éviter globalement, pour la gestion des
différents moteurs notamment).

Ce que tu cherches, c'est dans le genre de ce qui est fait dans
Db::SelectAll() ; à savoir (dans le contexte de Galette - cf.
http://framework.zend.com/manual/2.3/en/modules/zend.db.adapter.html#query-execution-through-zend-db-adapter-adapter-query)
:
use Zend\Db\Adapter\Adapter;
[...]
$result = $zdb->db->query(
    'SELECT version()',
    Adapter::QUERY_MODE_EXECUTE
);

$result sera alors un ResultSet
(http://framework.zend.com/manual/2.3/en/modules/zend.db.result-set.html) dans
lequel tu pourra trouver la valeur attendue (voir l'utilisation qui est
faite de Db::SelectAll() dans Preferences::load()).

Hope that helps ;)
-- 
Johan

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Galette-discussion mailing list
Galette-discussion@gna.org
https://mail.gna.org/listinfo/galette-discussion

Répondre à