powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Аналог функции fetch_column_types в SQLite3 ?
5 сообщений из 5, страница 1 из 1
Аналог функции fetch_column_types в SQLite3 ?
    #38395194
Uver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, всем участникам форума.

Такой вопрос: существует ли аналог функции fetch_column_types в " SQLite3 " или как ее можно заменить?

Пример : создана база sqlite с таблицей "InfoPeople", в ней поля: "Name" и "Surname" - строковые, "Age" - целое, "DateBirth" - дата. С помощью функции fetch_column_types "sqlite" я получаю в php ассоциативный массив на выходе:

$con_db= sqlite_open('server.db');

$cols = sqlite_fetch_column_types('InfoPeople', $con_db, SQLITE_ASSOC);

print_r($cols);


Array
([Name] => TEXT
[Surname] => TEXT
[Age] => INTEGER
[DateBirth] => DATE)


Создана такая же база в "SQLite3" . Как получить идентичный результат? Существует ли в " SQLite3 " аналог fetch_column_types или чем ее можно заменить?
...
Рейтинг: 0 / 0
Аналог функции fetch_column_types в SQLite3 ?
    #38395230
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlite3_column_type()?
...
Рейтинг: 0 / 0
Аналог функции fetch_column_types в SQLite3 ?
    #38395315
Uver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owlsqlite3_column_type()?

К сожалению эта функция возвращает лишь тип столбца, номер которого указывается в параметре этой функции.
Конечно, есть еще функция sqlite3_column_name() , которая возвращает имя столбца, и sqlite3_num_columns() , возвращающая количество столбцов в выборке.
Но, даже если я буду использовать эти три функции, то для получения желаемого результата в " SQLite3 ", мне понадобится:

1. выполнить выборку, к примеру:
$res = $con_db->query("SELECT * FROM InfoPeople");
2. вычислить количество полей в выборке:
$cnt = $res->numColumns();
и создать массив:
$cols = array();
3. и наконец, организовать цикл, например:
for($i = 0; $i < $cnt; $i++)
{
$cols[$res->columnName[$i]] = $res->columnType[$i];
}


Я думаю на выполнение этого кода, затрачивается больше времени, в то время, как в "sqlite", достаточно:
$cols = sqlite_fetch_column_types('InfoPeople', $con_db, SQLITE_ASSOC);

Поэтому, я и интересуюсь на форуме, есть ли более простое решение или функция в " SQLite3 "?
...
Рейтинг: 0 / 0
Аналог функции fetch_column_types в SQLite3 ?
    #38395376
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ааа... Ну тогда просто читай описание таблицы из sqlite_master и сам разбирай какие там типы полей заявлены.
...
Рейтинг: 0 / 0
Аналог функции fetch_column_types в SQLite3 ?
    #38396477
Uver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owlааа... Ну тогда просто читай описание таблицы из sqlite_master и сам разбирай какие там типы полей заявлены.
Благодарю за помощь, коллега по работе подсказал хороший вариант " Использование PRAGMA c параметром table_info ":

Реализовал так:

$res = $con_db->query("PRAGMA table_info(InfoPeople)"); // получение информации о структуре таблицы

$cols = array();

while($row = $res->fetchArray())
{
$cols[$row[1]] = $row[2]; // формирование ассоциативного массива cols с именами столбцов - ключей и типов столбцов - значений
}


Тему можно закрывать, спасибо всем за помощь...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Аналог функции fetch_column_types в SQLite3 ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]