Attention, si vous développez sur VirtueMart, il est très important de ne jamais démarrer les requêtes SQLs passés à ps_DB par un espace.
Je viens de perdre un peu de temps à cause de cela.
Le coupable est la méthode query de la classe ps_DB dont voici un extrait :
if (strtoupper(substr( $this->_sql , 0, 6 )) == "SELECT"
|| strtoupper(substr( $this->_sql , 0, 4 ))=='SHOW'
|| strtoupper(substr( $this->_sql , 0, 7 ))=='EXPLAIN'
|| strtoupper(substr( $this->_sql , 0, 8 ))=='DESCRIBE'
) {
//(...)
}
|| strtoupper(substr( $this->_sql , 0, 4 ))=='SHOW'
|| strtoupper(substr( $this->_sql , 0, 7 ))=='EXPLAIN'
|| strtoupper(substr( $this->_sql , 0, 8 ))=='DESCRIBE'
) {
//(...)
}
Si la requête commence par un blanc, VirtueMart ne détecte pas qu’un résultat est attendu, et un tableau d’une ligne est renvoyé.
Ce qui est navrant, c’est que j’avoue ne pas avoir compris l’intérêt d’avoir dupliqué l’API Joomla dans VirtueMart. Cela augmente les sources de bugs, et complexifie la maintenance de VirtueMart par la communauté.






