Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中为数据类型创建“IF”语句_Php_Mysql_Sql_Sql Server_Database - Fatal编程技术网

在PHP中为数据类型创建“IF”语句

在PHP中为数据类型创建“IF”语句,php,mysql,sql,sql-server,database,Php,Mysql,Sql,Sql Server,Database,我对这一切都不熟悉,希望能得到一些帮助。导致我的问题的一些背景是,我正在构建一个输出表的小型php接口。该表从SQL Server获取值。我必须展示4张桌子。3/4表成功动态显示,如果在SQL server端添加了列或行,它将自动更新php接口表。第四张桌子给了我一个问题。我至少已经确定了它为什么会中断工作;原因是,与varchar或nvarchar值相比,表中的两列是“日期\时间”值 本质上,我在脑海中构建它的方式是在我的“for_循环”中创建一个“IF”语句,它将读取每个列的数据类型,如果它

我对这一切都不熟悉,希望能得到一些帮助。导致我的问题的一些背景是,我正在构建一个输出表的小型php接口。该表从SQL Server获取值。我必须展示4张桌子。3/4表成功动态显示,如果在SQL server端添加了列或行,它将自动更新php接口表。第四张桌子给了我一个问题。我至少已经确定了它为什么会中断工作;原因是,与varchar或nvarchar值相比,表中的两列是“日期\时间”值

本质上,我在脑海中构建它的方式是在我的“for_循环”中创建一个“IF”语句,它将读取每个列的数据类型,如果它是date_时间类型,它将使用正确的PHP日期格式,如果不是,它将使用常规格式。这保持了界面的动态性,我通过硬编码列成功地完成了这一切,但我正试图让我的界面“经得起未来的考验”

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

假设$field相当于data/value/datatype列。这是我用来从SQLServer回显数据的变量

$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>";
}
我试过了,但没用。任何建议都会很有帮助,请记住我是新手,如果您能尽可能简化,我们将不胜感激!:

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


Kazmi

你可以用这个来代替gettype

 mysql_field_type(data,field_offset)
并在if条件中使用引号

请在这里查看详细信息

对于mssql,您可以使用mssql\u字段\u类型
在此处查看详细信息

1:gettype仅返回以下数据类型字符串:布尔、整数、双精度、字符串、数组、对象、资源、NULL、未知类型源:


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

多亏了Editor的链接,我进一步挖掘并找到了一个解决方案。对于遇到类似问题的任何其他人来说,将日期转换为字符串最有效,至少对我的用例是这样

这是我的密码: $serverName=server $connectionInfo=arrayDatabase=>:输入db,UID=>user,PWD=>password,'ReturnDatesAsStrings'=>true,CharacterSet=>'utf-8'; $con=sqlsrv\u connect$serverName,$connectionInfo

^^^根据我的理解,当连接到sql server数据库并提取information.schema时,返回日期字符串应该包含在connect语句中,它读取哪列是“datetime、date、time、timestamp等”,并将其转换为字符串而不是数据值


希望这能帮助其他人。另外,我觉得奇怪的是,与MYSQL相比,MSSQL在这个网站上没有多少内容

Hm根据gettype不返回DateTime不,我没有bksi,很好,但是我找到了另一个解决方案,检查下面。谢谢你!我认为他使用了mssql而不是mysql。他用“mysql”标记了这个问题,但你是对的,sqlsrv_get_field代表mssql$field=sqlsrv_get_field$result,$I;不是mysqlI bet,它也只返回字符串;它可以返回太混合的整数sqlsrv_get_field resource$stmt,int$fieldIndex[,int$getAsType]是的,它似乎返回不同的数据类型。