我对这一切都很陌生,希望能得到一些帮助。导致我的问题的一些背景是我正在构建一个输出表的小PHP界面。该表从SQL Server获取值。我必须显示4个表。 3/4表显示成功且动态(如果在SQL服务器端添加了一列或一行,它将自动更新php接口表)。第四张表给了我一个问题。我至少已经确定了为什么它会打破这份工作;原因是因为与varchar或nvarchar值相比,表中的两列是'date_time'值。
基本上,我在脑海中构建的方式是在我的'for_loop'中创建一个'IF'语句,它将读取每列的数据类型,如果它是date_time类型,它将把它放入正确的PHP日期格式,如果没有,它将以常规格式。 (这维持了界面内的动态,我通过对列进行硬编码成功地完成了所有操作,但我正在努力使我的界面“面向未来”)
这就是我对if语句的想法:
假设$ field等于列data / value / datatype。这是我用来回显来自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>";
}
我已经尝试过它并不起作用。任何建议都会有所帮助,请记住我是一个新手,所以如果你能尽可能地简化我会非常感激! :)
再次感谢您花时间阅读本文,如果您需要我提供更多信息,请与我们联系。
卡兹米
答案 0 :(得分: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
答案 1 :(得分: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”,它也会返回“string”。
答案 2 :(得分:0)
感谢edittor的链接,我进一步挖掘并找到了解决方案。对于遇到类似问题的其他人来说,将日期转换为字符串效果最好,至少对我的用例而言。
这是我的代码: $ serverName = server $ connectionInfo = array(“Database”=&gt;:“输入db”,“UID”=&gt;“user”,“PWD”=&gt;“密码”,'ReturnDatesAsStrings'=&gt; true,“CharacterSet “=&gt;'utf-8'); $ con = sqlsrv_connect($ serverName,$ connectionInfo);
^^^ Returndatesasstrings应该包含在你的connect语句中,根据我的理解,当它连接到你的sql server数据库并提取信息时,它会读取哪个列是'datetime,date,time,timestamp等'。并转换为字符串而不是数据值。
希望这有助于其他人。另外我觉得很奇怪MSSQL与本网站上的MYSQL相比并不多。