如何在php中获取db2变量的数据类型?

时间:2014-07-23 09:09:47

标签: php sql db2

从PHP代码中,我试图在DB2表中插入一个新行,其中我有列名而不是相应的数据类型。

Insert into <table_name> (column1,column2,column3,.....) values ('value1','value2','value3',....)

因此,如果任何列具有日期或时间戳数据类型,则'value'周围的单引号会使db2_exec函数抛出错误:

Warning: db2_exec(): Statement Execute Failed in C:\Program Files (x86)\insight_db.php on line 68 [IBM][CLI Driver][DB2/NT64] SQL0180N The syntax of the string representation of a datetime value is incorrect. SQLSTATE=22007 SQLCODE=-180

为了避免在这些值周围放置'',我需要获取表格每列的数据类型,从而检查是否放置引号的条件。

2 个答案:

答案 0 :(得分:0)

要获取列的数据类型,您可以尝试:

$result = mysql_query("SHOW COLUMNS FROM sometable");
if ($result) 
{
    if (mysql_num_rows($result) > 0) 
    {
         while ($row = mysql_fetch_assoc($result)) 
         {
             print_r($row['Field']);
             print_r($row['Type']);
         }
    }
}

然后这将打印字段的字段名称和数据类型。

我希望你会发现它没什么用处。

答案 1 :(得分:0)

您可以查询目录视图SYSCAT.COLUMNS以获取信息:

select
  colname, typename
from 
  syscat.columns
where
  tabschema = 'YOURSCHEMA' and
  tabname = 'YOURTABLE'

但是,您的方法不起作用,因为日期时间文字必须用单引号括起来,删除它们会导致insert语句无效。为避免SQL0180N错误,您可以提供ISO格式的日期时间值,例如YYYY-MM-DD-HH.MM.SS的{​​{1}}。