2012-01-23 3 views
0

У меня есть код в PHP, как:получить метаданные из результата в рамках ZEND

$result = mysql_query($cxn,$sql_query) 
$dataset= mysqli_fetch_fields($result); 
for ($i = 0; $i < 13; $i++) { 
     $dataset[$i]->name 
} 

Я хочу, чтобы приведенный выше код в Зенд.

Здесь mysql_fetch_fields ($ result) возвращает информацию о полях из заданного результирующего набора $ result.Как сделать это в zend framework? У меня есть googled, я обнаружил, что мы можем получить информацию о столбцах из определенной таблицы но из результирующего набора, как получить в zend framework?

ответ

1

В настоящее время это невозможно в Zend Framework. Посмотрите на Request solution for result set metadata. Вы можете попробовать использовать экспериментальную PDOStatement::getColumnMeta

UPDATE - пример кода в комментариях

sample table structure 
table1: id (int), field1 char(3) 
table2: id (int), field2 char(3) 

<?php 

require_once('Zend/Loader/Autoloader.php'); 

$autoloader = Zend_Loader_Autoloader::getInstance(); 

// create MySQL database adapter 
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'  => '127.0.0.1', 
    'username' => 'test', 
    'password' => 'test', 
    'dbname' => 'test' 
)); 

// create temporary table 
$result = $db->getConnection()->exec(' 
    CREATE TEMPORARY TABLE myTable 
    SELECT 
     t1.id, 
     t1.field1, 
     t2.field2 
    FROM table1 t1 
     INNER JOIN table2 t2 
      ON t1.id = t2.id 
'); 

// describe 
$info = $db->describeTable('myTable'); 

var_dump($info); 

// drop table 
$result = $db->getConnection()->exec('DROP TEMPORARY TABLE myTable'); 

More about running "other" database statements

+0

Того right.Above не является Worki ng.So, какова альтернатива для вышеуказанного кода, написанного на php? Потому что мне нужно получить имя поля, возвращаемое из запроса. – ryan

+0

Вы можете попробовать использовать адаптер mysql и использовать предложение Билла Карвина http://framework.zend.com/issues/browse/ZF-745?focusedCommentId=27931&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel# comment-27931 'CREATE TEMPORARY TABLE foo SELECT ... query above ... DESCRIBE foo;' – BartekR

+0

Спасибо за ответ. Каким должен быть синтаксис, если я хочу создать временную таблицу как выбор запроса из базовых таблиц? – ryan

0

я нашел получать все метаданные о таблице очень просто с Zend Framework.

  • сначала создать DbTable модель для таблицы: Define Table Class
  • экземпляр объекта: $table = new Application_Model_DbTable_Table();
  • вызов -> информация() для этого объекта: $ мета = $ table-> инфо()

Вот отрывок из отвала с помощью этого метода: метод Retrieving Table Metadata

array(10) { 
    ["schema"] => NULL 
    ["name"] => string(5) "track" 
    ["cols"] => array(6) { 
    [0] => string(7) "trackid" 
    [1] => string(9) "weekendid" 
    [2] => string(7) "shiftid" 
    [3] => string(13) "bidlocationid" 
    [4] => string(3) "qty" 
    [5] => string(4) "lead" 
    } 
    ["primary"] => array(1) { 
    [1] => string(7) "trackid" 
    } 
    ["metadata"] => array(6) { 
    ["trackid"] => array(14) { 
     ["SCHEMA_NAME"] => NULL 
     ["TABLE_NAME"] => string(5) "track" 
     ["COLUMN_NAME"] => string(7) "trackid" 
     ["COLUMN_POSITION"] => int(1) 
     ["DATA_TYPE"] => string(8) "smallint" 
     ["DEFAULT"] => NULL 
     ["NULLABLE"] => bool(false) 
     ["LENGTH"] => NULL 
     ["SCALE"] => NULL 
     ["PRECISION"] => NULL 
     ["UNSIGNED"] => NULL 
     ["PRIMARY"] => bool(true) 
     ["PRIMARY_POSITION"] => int(1) 
     ["IDENTITY"] => bool(true) 
    } 
... cont ... 
} 
    ["rowClass"] => string(27) "Application_Model_Row_Track" 
    ["rowsetClass"] => string(20) "Zend_Db_Table_Rowset" 
    ["referenceMap"] => array(3) { 
    ["Weekend"] => array(3) { 
     ["columns"] => string(9) "weekendid" 
     ["refTableClass"] => string(33) "Application_Model_DbTable_Weekend" 
     ["refColumns"] => string(9) "weekendid" 
    } 
    ["Shift"] => array(3) { 
     ["columns"] => string(7) "shiftid" 
     ["refTableClass"] => string(31) "Application_Model_DbTable_Shift" 
     ["refColumns"] => string(7) "shiftid" 
    } 
    ["BidLocation"] => array(3) { 
     ["columns"] => string(13) "bidlocationid" 
     ["refTableClass"] => string(37) "Application_Model_DbTable_BidLocation" 
     ["refColumns"] => string(13) "bidlocationid" 
    } 
    } 
    ["dependentTables"] => array(1) { 
    [0] => string(32) "Application_Model_DbTable_Member" 
    } 
    ["sequence"] => bool(true) 
} 
Смежные вопросы