【问题标题】:Zend Framework 2 'quote_identifiers' => falseZend 框架 2 'quote_identifiers' => false
【发布时间】:2014-04-07 14:38:19
【问题描述】:

所以当我遇到以下问题时,我正在计划我的应用程序: 我希望能够使用 Zend Db Select 进行此查询:

选择COLUMN_NAME AS COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 在哪里TABLE_NAME = '品牌' AND TABLE_SCHEMA = '产品'

从表中选择列。问题是 Zend 生成:

选择COLUMN_NAME AS COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 其中TABLE_NAME = '品牌' AND TABLE_SCHEMA = '产品'

在 INFORMATION_SCHEMA.COLUMS 上使用“``”(引号)会产生“未选择数据库”的 SQL 错误。 我试图在我的配置数组中插入“'platform_options' => array('quote_identifiers' => false)”,但没有任何反应。 用于生成的代码是:

    $sql = new Sql($this->adapter);
    $select = $sql->select();
    $select->columns(array('COLUMN_NAME'),false);
    $select->from('INFORMATION_SCHEMA.COLUMNS');
    $select->where(array('TABLE_NAME' => $table,'TABLE_SCHEMA' => $database));
    $statement = $sql->prepareStatementForSqlObject($select);
    var_dump($sql->getSqlStringForSqlObject($select));

【问题讨论】:

  • 不是引用标识符问题的答案,但根据您在此处查询的内容,您可能需要查看Zend\Db\Metadata -> framework.zend.com/manual/2.3/en/modules/zend.db.metadata.html
  • @Crisp 我将检查此解决方案并返回回复。但是问题仍然存在,您能否在没有元数据帮助的情况下解决引用问题?10q
  • @Crisp 元数据的使用帮助我解决了问题。

标签: php mysql zend-framework2


【解决方案1】:

回到这个问题上,我设法找到了用模式名称为表添加前缀的答案。 Here 您可以找到所描述的问题,解决方案似乎是 Zend TableIdentifier。因此,作为一个小结论,信息架构/表/列的解决方案是元数据,而以架构名称为前缀的是表标识符。如果您无法删除引号,请使用这些解决方案之一

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    相关资源
    最近更新 更多