Как получить поле типа данных и в pdo? - PullRequest
1 голос
/ 23 марта 2012

Ниже приведен код, который я пытался сделать, я использую mysql 5.0+ и движок innodb. Могу ли я использовать getColumnMeta (эксперимент?) И как использовать его для получения метаданных типа данных?

Спасибо.

 $types = array(
    PDO::PARAM_BOOL => 'bool',
    PDO::PARAM_NULL     => 'null',
    PDO::PARAM_INT      => 'int',
    PDO::PARAM_STR      => 'string',
    PDO::PARAM_LOB      => 'blob',
);

try{

$sql = 'SELECT COUNT(*) FROM subscriber,list_sub WHERE list_sub.ListID =? AND list_sub.SubID = subscriber.SubID  ';

$stmt = $conn->prepare($sql);
$stmt->execute(array($list));
$meta = $stmt->getColumnMeta(0);
var_dump($meta);
}
catch(PDOException $e)
    {
    die ($e->getMessage()."<a href='view.php' onClick='window.location.reload()'> Back</a>"); 
    }

1 Ответ

0 голосов
/ 17 августа 2013

Я знаю, что этой ветке 1+ лет, но если другие наткнуться на нее, как я на поиске, это может быть полезно.

У меня есть класс-оболочка базы данных PDO, который я создал, и вот мой метод для этого в моем классе.Я не знаю, насколько это портативно, поскольку я никогда не использовал оракул, но он работает для моей ситуации, используя MySql.Для этого требуется, чтобы СУБД поддерживала «SHOW COLUMNS FROM», поэтому она должна работать с любыми СУБД, поддерживающими это.

Как видно, я использую блок try / catch для перехвата любых исключений PDO, которые могут произойти, и регистрации ошибок.

    /**
 * @ getFieldType - gets the field data type for a specific field in a table.
 *
 * @ param type: text $table = The name oof a data table.
 * @ param type: text $field = A field in the data table.
 */
public static function getFieldType($table, $field) {
    $ret = false;
    $sql = "SHOW COLUMNS FROM `$table` WHERE Field = '$field'";

    try {
        $result = self::dbQueryRow($sql);
        $ret = $result['Type'];
    } catch (PDOException $e) {
        self::logError($e, "getFieldType", $sql);
    }

    return $ret;
} //End public static function getFieldType

Используемые здесь методы dbQueryRow и logError должны быть selfобъяснение.

Надеюсь, что это полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...