2013-04-04 6 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 प्रश्नों को अमान्य करता है, क्योंकि यह सभी पहचानकर्ता नाम (तालिकाओं, कॉलम इत्यादि) को आगे-उद्धरण (`) के बजाय डबल-कोट्स (") के साथ उद्धृत करता है।

तो, क्यों PDO-MySQL ड्राइवर उपयोग करता है इसके बजाय Sql92 प्रतीक? और इसे कैसे ठीक किया जाए?

+0

क्यों "नया वर्ग" कथन, आपको तैयार करना चाहिए और $ टी से क्वेरी निष्पादित करें उसका-> एडाप्टर – Ashley

+0

उनके सभी का उपयोग, एशले है। –

उत्तर

1

इस समस्या का एकमात्र समाधान नया \ Zend \ Db \ Platform \ Mysql ऑब्जेक्ट बनाना था और जब मैं कनेक्शन शुरू करता हूं तो इसे एडाप्टर क्लास के दूसरे पैरामीटर के रूप में पास करता था। यह प्रश्न यह करने का स्वचालित तरीका है। MySQL एडाप्टर को प्रारंभ करने से MySQL प्लेटफ़ॉर्म को क्यों संलग्न नहीं किया जाता है, ऐसा कुछ है जिसे मैं समझ नहीं पा रहा हूं - इसके बजाय यह SQL92 प्लेटफॉर्म को जोड़ता है।

+3

मैं इस समस्या के बारे में गिटहब पर एक मुद्दा खोलने का सुझाव देता हूं। हो सकता है कि कुछ ऐसा है जो हम सही ढंग से नहीं समझते हैं, फिर भी निश्चित रूप से वहां बेहतर ध्यान मिलेगा! – Sam