2015-11-06 86 views
0

就是這樣。在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

回答

0

您可以將結果值的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

相關問題