PHP SQL函数不返回有效的SQL数据类型

时间:2012-01-31 15:08:49

标签: php mysql

所以我使用以下函数来获取SQL数据库中某些字段的数据类型。

$type  = mysql_field_type($result, $i);
$len   = mysql_field_len($result, $i);

我需要使用这些数据类型来最终构建另一个表。问题是我从这些函数获得的返回值不是有效的SQL数据类型,我得到的回报如下:string(25),int(11),string(25)

Int是正常但字符串不是SQL数据类型,所以我需要确定哪些返回需要重新格式化为正确的数据类型并使函数能够做到这一点?或者我错过了另一种方法吗?

3 个答案:

答案 0 :(得分:2)

您将看到mysql_field_type()函数将按照(http://it2.php.net/mysql_field_type)返回以下数据:

CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET: string
TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER, BIGINT: int
FLOAT, DOUBLE, DECIMAL, NUMERIC: real
TIMESTAMP: timestamp
YEAR: year
DATE: date
TIME: time
DATETIME: datetime
TINYBLOB, MEDIUMBLOB, LONGBLOB, BLOB: blob

也许你可以尝试类似的东西:

$table = "my_table";
$result = mysql_query("DESCRIBE TABLE `{$tabler}`");
while ($row = mysql_fetch_object($result)) {
    $field = $row->Field;
    $type = $row->Type;
}

希望有所帮助。

答案 1 :(得分:1)

尝试运行如下查询:

SELECT column_type FROM information_schema.columns WHERE table_schema = 'databaseName' AND table_name = 'tableName' AND column_name = 'columnName';

答案 2 :(得分:0)

多数民众赞成因为mysql_field_len返回架构长度(如果存在)

  

将获取数据库中指定的id字段的长度   http://php.net/manual/en/function.mysql-field-len.php

同样stringmysql_field_type的有效回报,不确定问题是什么。

示例

<?php
mysql_connect("localhost", "mysql_username", "mysql_password");
mysql_select_db("mysql");
$result = mysql_query("SELECT * FROM func");
$fields = mysql_num_fields($result);
$rows   = mysql_num_rows($result);
$table  = mysql_field_table($result, 0);
echo "Your '" . $table . "' table has " . $fields . " fields and " . $rows . " record(s)\n";
echo "The table has the following fields:\n";
for ($i=0; $i < $fields; $i++) {
    $type  = mysql_field_type($result, $i);
    $name  = mysql_field_name($result, $i);
    $len   = mysql_field_len($result, $i);
    $flags = mysql_field_flags($result, $i);
    echo $type . " " . $name . " " . $len . " " . $flags . "\n";
}
mysql_free_result($result);
mysql_close();
?>

参考:http://www.php.net/manual/en/function.mysql-field-type.php