ZF2 – \ Zend \ Db \ Adapter \ Platform :: getQuoteIdentifierSymbol ()

Il codice è il seguente, where mi propongo di usare Pdo_mysql:

use \Zend\Db\Adapter\Adapter; use \Zend\Db\Sql\Sql; use \Zend\Db\Sql\Expression; $params = arrays( '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 controllo il simbolo dell'identificatore-citazione con:

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

Come puoi vedere, il doppio è il simbolo. Questo ovviamente invalida tutte le mie query MySQL, poiché cita tutti i nomi degli identificatori (tabelle, colonne, ecc.) Con virgolette (") invece di virgolette (`).

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

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