mysqli и типы полей - PullRequest
       16

mysqli и типы полей

3 голосов
/ 10 июня 2010

Я хотел бы знать, существует ли простой способ извлечения данных из таблиц mysql с «правильными» типами данных? Что я имею в виду, если тип поля, например, INT или SMALLINT, можно ли передать эти типы непосредственно в PHP как целые числа?

Я провел поиск и обнаружил mysqli_fetch_fields, но для типа SMALLIT - 2, для INT 3 и так далее. Это можно сделать таким образом, но это выглядит довольно неуклюжим обходным путем. Есть ли лучший способ?

Я использую PHP и mysqli.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 10 июня 2010

Самый простой способ - создать свой собственный обработчик базы данных поверх вызовов mysqli, который сделает это за вас.

1 голос
/ 16 февраля 2011

http://www.php.net/manual/en/mysqli-result.fetch-field-direct.php

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Name LIMIT 5";

if ($result = $mysqli->query($query)) {

    /* Get field information for column 'SurfaceArea' */
    $finfo = $result->fetch_field_direct(1);

    printf("Name:     %s\n", $finfo->name);
    printf("Table:    %s\n", $finfo->table);
    printf("max. Len: %d\n", $finfo->max_length);
    printf("Flags:    %d\n", $finfo->flags);
    printf("Type:     %d\n", $finfo->type);

    $result->close();
}

/* close connection */
$mysqli->close();
?>
0 голосов
/ 26 ноября 2018

Вы можете использовать этот код

SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'yourtablename replace your table name' AND COLUMN_NAME = 'tablecolumnname replace your table column name';


Используйте это перед выполнением основного запроса и после получения типа данных, затем выполните операцию.

...