2013-04-04 9 views
5

codice è il seguente, dove mi propongo di usare pdo_mysql:ZF2 - Zend Db Adapter Platform :: getQuoteIdentifierSymbol()

use \Zend\Db\Adapter\Adapter; 
use \Zend\Db\Sql\Sql; 
use \Zend\Db\Sql\Expression;  

$params = array(
    'driver' => "Pdo_mysql", 
    'host'  => &$this->Registry->config[ 'sql' ][ 'host' ], 
    'username' => &$this->Registry->config[ 'sql' ][ 'user' ], 
    'password' => &$this->Registry->config[ 'sql' ][ 'passwd' ], 
    'dbname' => &$this->Registry->config[ 'sql' ][ 'dbname' ] 
); 
$this->adapter = new \Zend\Db\Adapter\Adapter($params); 
$this->platform = $this->adapter->getPlatform(); 
$this->sql  = new Sql($this->adapter); 

E quando ho check simbolo identificativo-preventivo con:

print $this->platform->getQuoteIdentifierSymbol(); // Output: " 

Come si può vedere, il doppio è il simbolo. Questo ovviamente invalida tutte le mie query MySQL, poiché riporta tutti i nomi identificativi (tabelle, colonne, ecc.) Con virgolette (") invece di virgolette (`).

Quindi, perché il driver PDO-MySQL utilizza Il simbolo Sql92 invece? E come risolverlo?

+0

Perché la "nuova frase Sql", dovresti preparare e eseguire query da $ t il suo-> adattatore – Ashley

+0

Hanno tutti i loro usi, Ashley. –

risposta

1

L'unica soluzione a questo problema era creare un nuovo oggetto \ Zend \ Db \ Platform \ Mysql e passarlo come secondo parametro alla classe Adapter quando avvio una connessione. implica il modo automatico di farlo. Perché inizializzare la scheda MySQL non collega la piattaforma MySQL ad esso, è qualcosa che non capisco - invece collega la piattaforma SQL92.

+3

Suggerisco di aprire un problema su GitHub per quanto riguarda questo problema. Forse c'è qualcosa che non capiamo correttamente, ma sicuramente otterrà una maggiore attenzione lì! – Sam