作者 主題: php sqlsrv 如何顯示出欄位名稱  (閱讀 4380 次)

0 會員 與 1 訪客 正在閱讀本文。

jslin

  • 可愛的小學生
  • *
  • 文章數: 15
    • 檢視個人資料
php sqlsrv 如何顯示出欄位名稱
« 於: 2012-07-20 20:18 »
各位先進好~~
個人設計一個以php connection ms 2008 sql server,
是可以很正確顯示出SQL SELECT 出來一筆筆的資料記錄, 但是無法顯示出SELECT出來 "欄位名稱" ...??
是否可以幫忙提正語法或是有相關於此示範程式顯示欄位PHP語法, 謝謝~~~

附上執行結果 : http://imageshack.us/photo/my-images/803/phpsqlsrv.jpg/


以下是個人php語法:


1 <html>
2     <head>
3     <meta http-equiv="Content-Type" content="text/html; charset=big5">
4      <title>
5       資料讀取的 sqlsrv 函數群
6      </title>
7     </head>
8       <body>
9         <table border="3" cellpadding="3" cellspacing="1">
10         <form action="conn.amsi.php" method="Post">
11         <b><center><font size="10">電子刷卡個人記錄查詢</font></center></b><br/>
12         <b>員工編號:</b>
13         <input type="Text" size=10 name="EmpCode" value="A"><br/>
14         <b>刷卡日期:</b><br/>
15           <input type="Text" size=10 name="MonsCode" value="">
16           <input type="Text" size=10 name="MoneCode" value="">
17           <input type="Submit" value="確定" name="btnSubmit"><br/>
18         (譬如:查2012年6月當月份刷卡記錄,就請輸入201206到201207)<br/>
19         </form>
20   <?php
21   
22   $action = $_server['PHP_SELF' ];
23   
24   if ($_server['REQUEST_METHOD'] == 'POST') {
25   
26   // echo '使用POST方法傳遞表單值';
27   
28   // echo "$_POST[PurCode]";
29   
30   }
31   
32   
33   /* Connect to the local server using Windows Authentication and
34   specify the AdventureWorks database as the database in use. */
35   $serverName = "erpdb";
36   
37   // $connectionInfo = array( "Database"=>"SKTEST");
38   /* Get UID and PWD from application-specific files. */   
39   
40   $connectionInfo = array(
41                           "Uid"=>"sk",
42                           "Pwd"=>"pass", 
43                           "Database"=>"SKTEST"
44                           );
45   
46   // echo $serverName, $connectionInfo;
47      
48   $conn = sqlsrv_connect( $serverName, $connectionInfo);
49   // echo $conn;
50    
51   if( $conn === false )
52     {
53        echo "Could not connect.\n";
54        die( print_r( sqlsrv_errors(), true));
55     }
56   
57   /* Define and execute the query. */
58   $tsql = 
59    "SELECT MC001 AS 員工編號, SUBSTRING (MC002,1,4) + '-' + SUBSTRING (MC002,5,2) + '-' + SUBSTRING (MC002,7,2) AS 刷卡日期,
60      '刷卡時間' = SUBSTRING(MC003,1,2) + ':' + SUBSTRING(MC003,3,4),
61           MC007 AS 班別, '班別' = CASE (MC007) WHEN '01' THEN '上班' ELSE '下班' END 
62     FROM SKTEST..AMSMC 
63     WHERE MC002 BETWEEN '$_POST[MonsCode]' AND '$_POST[MoneCode]' AND MC001 LIKE '$_POST[EmpCode]%'
64     ORDER BY MC001, MC002, MC007";
65   // echo $tsql;
66   
67   $cursorType = array("Scrollable" => SQLSRV_CURSOR_KEYSET);
68   $result = sqlsrv_query($conn, $tsql, $params, $cursorType);
69   // echo $result;
70    
71   if( $result === false)
72     {
73        echo "Error in executing query.\n";
74        die( print_r( sqlsrv_errors(), true));
75     }
76   
77   /* Retrieve the number of fields. */
78   $numFields = sqlsrv_num_fields( $result );
79   // echo $numFields;
80   
81   $rowCount = sqlsrv_num_rows($result);
82   echo "共計有:".$rowCount."筆"; 
83   
84   
85   
86   /* Iterate through each row of the result set. */
87   while( sqlsrv_fetch( $result ))
88     {
89        /* Iterate through the fields of each row. */
90        echo "<tr>";
91        for($i = 0; $i < $numFields; $i++)
92        {
93             echo "<td>". sqlsrv_get_field($result, $i, 
94                      SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)). "</td>";
95              
96        }
97        echo "</tr>". "\n" ;
98        
99     }
100    
101   
102   /* Free statement and connection resources. */
103   sqlsrv_free_stmt( $result );
104   sqlsrv_close( $conn );
105   ?>
106          </table>
107       </body>
108   </html>
« 上次編輯: 2012-07-20 20:36 由 jslin »

hikohan

  • 俺是博士!
  • *****
  • 文章數: 1288
    • 檢視個人資料
Re: php sqlsrv 如何顯示出欄位名稱
« 回覆 #1 於: 2012-07-25 15:17 »
php sqlsrv後續並無更新開發,而連結上,於nvarchar部分還是有問題。(連接2005/2008)

目前使用win32 ODBC或JDBC(by tomcat)中介,輸出的資料是正常的。

欄位部分,個人用一個loop把欄位fill回recordset,使原來的陣列

從原始的 $mAado[$mNnumA][$mNnumB]

擴增 $mAado[$mNnumA]['sColName']
lifeIsFunWithPHP.

jslin

  • 可愛的小學生
  • *
  • 文章數: 15
    • 檢視個人資料
Re: php sqlsrv 如何顯示出欄位名稱
« 回覆 #2 於: 2012-07-27 15:48 »
php sqlsrv後續並無更新開發,而連結上,於nvarchar部分還是有問題。(連接2005/2008)

目前使用win32 ODBC或JDBC(by tomcat)中介,輸出的資料是正常的。

欄位部分,個人用一個loop把欄位fill回recordset,使原來的陣列

從原始的 $mAado[$mNnumA][$mNnumB]

擴增 $mAado[$mNnumA]['sColName']

ok 已經有範例語法 可以了 !! 謝謝
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ) {
if (++$i == 1) { // 第一筆資料顯示欄位名稱
echo "<tr>";
foreach (array_keys($row) as $val) {
echo "<td>".$val."</td>";
}
echo "</tr>". "\n" ;
}

echo "<tr>";
foreach ($row as $val) {
echo "<td>".$val."</td>";
}
echo "</tr>". "\n" ;
}