我正在將應用程序重新編制爲ZF2並遇到了一個問題。我使用與SQLSRV驅動程序PDO,我需要運行下面的查詢:如何查詢MS SQL數據庫的信息模式
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES ORDER BY TABLE_NAME
我的查詢功能看起來是這樣的:
public function getTables()
{
$sql = new Sql($this->dbAdapter);
$select = $sql->select();
$select->columns(array('TABLE_NAME'))
->from('INFORMATION_SCHEMA.TABLES')
->order('TABLE_NAME');
$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();
return $results;
}
我不斷收到以下錯誤:
SQLSTATE[42S02]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'INFORMATION_SCHEMA.TABLES'.
是否有一種特殊的方式來編碼?我可以整天查詢標準數據庫表並且沒有問題。
在此先感謝您的任何建議。
sys.objects和sys.tables在ZF2中不適合我。如果我使用手動創建的PDO對象運行查詢,它工作正常。我在ZF2中從工廠構造數據庫適配器,然後使用返回的dbAdapter構造sql對象。當我var_dump我得到的語句:'SELECT「INFORMATION_SCHEMA.TABLES」。「TABLE_NAME」AS「TABLE_NAME」FROM「INFORMATION_SCHEMA.TABLES」ORDER BY「TABLE_NAME」ASC'似乎是正確的形式。對於sys.tables和sys.objects,它說的是同樣的事情。肯定讓我有點困惑。最壞的情況下,我可以從PDO手動運行它。 –
對不起,我對Zend Framework不熟悉(我可能應該會這樣)。什麼是PDO? – JoeFletch
PHP數據對象(PDO)http://php.net/manual/en/book.pdo.php –