在PHP 5.x中是否有任何简单的方法来回显RecordSet上的任何类型的数据?

在PHP 5.x中是否有任何简单的方法来回显RecordSet上的任何类型的数据?

问题描述:

就是这样。在PHP 5.x中是否有任何简单的方法来回显RecordSet上的任何类型的数据?

我写了一个SQL语句哑鸭,如:

SELECT * FROM table 

基本上我想:

  1. 做一个普通的SELECT语句;
  2. 通过Resulset循环;
  3. 将元数据“名称”打印为表格标题。
  4. 再次循环结果集;
  5. 将每条记录打印为表格行。
  6. 将每个字段打印为表格列。
  7. 如何在字段中测试数据,以便我可以正确地将这些数据作为字符串进行回显?我不确定自己是否清楚。

我不知道什么数据将返回形成报表,以前。 这是尝试打印日期时间字段,并获得错误后的动机。

这是我的PHP代码:

$sql = "SELECT * FROM client";  

    $stmt = sqlsrv_query($conn, $sql);  

    if($stmt === false) 
    { 
     die(print_r(sqlsrv_errors(), true)); 
    } 

    $num_fields = sqlsrv_num_fields($stmt); 

    echo '<table class="table table-striped table-bordered">'; 
    // Output Headers - In SQL Server 

    echo '<tr style="font-size:12px">'; 
    foreach(sqlsrv_field_metadata($stmt) as $fieldMetadata) 
    { 
     foreach($fieldMetadata as $name => $value) 
     { 
      if ($name == "Name"){ 
       echo "<td><strong>" . "$value" . "</td></strong>"; 
      } 
     } 

    } 
    echo "</tr>"; 

    // Output fields data, after fetch new row. 
    while (sqlsrv_fetch ($stmt)) 
    { 
     // \echo '<tr class="small" style="font-size:10px">'; 
     echo '<tr class="small">'; 
     for ($i = 0; $i < $num_fields; $i++) 
     { 
      echo '<td class="text-nowrap">'; 
      print_r (sqlsrv_get_field($stmt, $i)); 
      echo "</td>"; 
     } 
     echo "</tr>"; 
    } 
    echo "</table>"; 

请纠正我任何不好的做法,或愚蠢的编码......我在这里一个完整的新手。

+0

注意的是,在第一循环中,您已经把'strong'结束标记'td'之外。另外,你可以只写**回声“​​$值” **不点操作。 – trincot

+0

谢谢,@trincot,我在有点急的时候写了这个脚本......已经修复了。 :) – JrZabott

您可以将结果值的specify the data type,并选择string数据类型,如下所示:

print_r (sqlsrv_get_field($stmt, $i, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR))); 

或者,而不是调用sqlsrv_fetchsqlsrv_get_field,使用sqlsrv_fetch_array作为所有检索到的数据自动转换为string

+0

谢谢你指点我正确的方向......我真的很感激;我正在阅读文档......但是,仅仅为了简单说明,这个指定的数据类型(SQLSRV_PHPTYPE_STRING())可以将日期时间数据隐式转换为默认的预格式化字符串?是吗? – JrZabott

+0

就是这样。同时我也描述了一个替代方案。因为它看起来不太模糊,所以你的选择可能会选择那个。 – trincot

+0

非常感谢。 这工作得很好。 :) 对不起,迟到了。 – JrZabott