1

我对这一切都很陌生,希望能得到一些帮助。导致我的问题的一些背景是我正在构建一个输出表格的小型 php 界面。该表从 SQL Server 获取值。我必须显示 4 个表格。3/4 表显示成功且动态(如果在 SQL 服务器端添加列或行,它将自动更新 php 接口表)。第四张桌子给了我一个问题。我至少已经确定了它为什么会破坏工作;原因是因为与 varchar 或 nvarchar 值相比,表中的两列是“date_time”值。

本质上,我在脑海中构建它的方式是在我的“for_loop”中创建一个“IF”语句,它将读取每列的数据类型,如果它是 date_time 类型,它将把它放入正确的 PHP日期格式,如果不是,它将以常规格式放置。(这在界面内保持动态,我已经成功地完成了这一切,通过对列进行硬编码,但我试图让我的界面“面向未来”)

这就是我对 if 语句的想法:

假设 $field 相当于列数据/值/数据类型。这是我用来回显来自 sql server 的数据的变量。

$field = sqlsrv_get_field($result, $i);
if(gettype($field) == DateTime)
{
     echo "<td>".date_format($field, 'Y-m-d H:i:s')."</td>";
}
else
{
    echo "<td>".$field."</td>";
}

我已经尝试过了,但它不起作用。任何建议都会有所帮助,请记住我是新手,所以如果您能尽可能简化,将不胜感激!:)

再次感谢您花时间阅读本文,如果您需要我提供更多信息,请告诉我。

卡兹米

4

3 回答 3

0

你可以试试这个,而不是 gettype

 mysql_field_type(data,field_offset)

并在 if 条件中使用引号

在这里查看详细信息http://php.net/manual/en/function.mysql-field-type.php

对于 mssql,您可以mssql_field_type 在这里查看详细信息http://php.net/manual/en/function.mssql-field-type.php

于 2013-09-24T02:36:48.763 回答
0

1:gettype() 仅返回以下数据类型字符串:“boolean”、“integer”、“double”、“string”、“array”、“object”、“resource”、“NULL”、“unknown type”(来源: http: //php.net/manual/en/function.gettype.php

2:在 PHP 中查询 MySQL 数据库总是返回字符串,因此即使 gettype 函数知道“DateTime”,它也只会返回“字符串”。

于 2013-09-24T02:36:57.857 回答
0

感谢edittor的链接,我进一步挖掘并找到了解决方案。对于遇到类似问题的其他人来说,将日期转换为字符串效果最好,至少对于我的用例而言。

这是我的代码: $serverName = server $connectionInfo = array("Database"=>:"enter db", "UID"=>"user", "PWD"=>"password", 'ReturnDatesAsStrings'=> true, "字符集" => 'utf-8') ; $con = sqlsrv_connect($serverName, $connectionInfo);

^^^Returndatesasstrings 应该包含在您的连接语句中,据我了解,当它连接到您的 sql server 数据库并提取信息时,它会读取哪一列是“日期时间、日期、时间、时间戳等”。并转换为字符串而不是数据值。

希望这对其他人有帮助。我也觉得奇怪的是,与这个网站上的 MYSQL 相比,MSSQL 上的内容并不多。

于 2013-09-24T14:42:41.530 回答