Code is as following, where I aim to use Pdo_mysql:
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 );
And when I check identifier-quote symbol with:
print $this->platform->getQuoteIdentifierSymbol(); // Output: "
As you can see, double quote is the symbol. This of course invalidates all MySQL queries of mine, since it quotes all identifier names (tables, columns etc) with double-quotes (") instead of forward-quote (`).
So, why PDO-MySQL driver uses Sql92 symbol instead? And how to fix that?
The only solution to this problem was to create new \Zend\Db\Platform\Mysql object and pass it as second parameter to Adapter class when I initiate a connection. This question implies the automatic way of doing it. Why initializing MySQL adapter doesn't attach MySQL platform to it, is something I don't understand - instead it attaches SQL92 platform.