2013-04-04 59 views
5

代码是作为以下内容,其中我的目标是使用PDO_MYSQL:ZF2 - Zend的 DB 适配器平台:: 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); 

当我检查具有标识符引号符号:

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

正如你所看到的,双引号是符号。这当然会使我的所有MySQL查询无效,因为它会用双引号(“)而不是正向引号(`)引用所有标识符名称(表格,列等)。 Sql92符号代替吗?以及如何修复?

+0

为什么“新Sql”语句,你应该准备和从$ t执行查询他的 - >适配器 – Ashley 2013-04-08 12:15:22

+0

他们都有自己的用途,阿什利。 – 2013-04-09 06:34:21

回答

1

解决此问题的唯一方法是创建新的\ Zend \ Db \ Platform \ Mysql对象,并在启动连接时将它作为第二个参数传递给Adapter类。意味着这样做的自动方式为什么初始化MySQL适配器没有附加MySQL平台,这是我不明白的 - 它改为SQL92平台。

+3

我建议在GitHub上就这个问题开一个问题。也许有些事情我们不明白,但它肯定会在那里得到更好的关注! – Sam 2013-04-10 07:40:23