php sqlserver2005应用编程

by 清泉 7. 十二月 2009 13:01

这方面的资料在网络上不太好找,按照上一篇的内容,整理了一下,做了一个可以运行的php + sql server实例好让大家方便,

<html>
<body>

<h1 align="center">这一课,练习数据库的编程</h1>
<?php
$serverName = "localhost";
//$serverName = "192.168.0.254";
$pwd = "sa";
$uid = "sa";
$connectionInfo = array( "UID"=>$uid,"PWD"=>$pwd,"Database"=>"gprs");
$conn = sqlsrv_connect($serverName,$connectionInfo);
if( $conn == false )
{
     echo "Could not connect.\n";
     die( print_r( sqlsrv_errors(), true));
}else{
 echo "恭喜你,数据库连接成功<br>";
 }
$tSql="select top 5  * from device_info_tbl";

if(!($stmt=sqlsrv_query($conn,$tSql))){
 echo "error in statement!<br>";
}

$a=array("a"=>"aaaa","b"=>"bbbb","c"=>"cccc");
echo "元素个数:". count($a)."<br>";
while( sqlsrv_fetch( $stmt))
{
 // 以 sqlsrv_get_field 函式取得特定欄位的資料

 echo "ProdID: ".sqlsrv_get_field($stmt, 0)."<br>";
 echo "UnitPrice: ".sqlsrv_get_field($stmt, 1)." <br>";
 echo "StockedQty: ".sqlsrv_get_field($stmt, 2)." <br>";
 echo "-----------------<br>";
}
foreach($a as $key =>$value){
 echo $key ."=>".$value." ";
}
 echo "<br>";
$aRoster=array();
$index=0;


while($restult=sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC)){
 
 $temp=array(
  id=>$restult["ID"],
  address=>$restult["ADDRESS"]
 );
 array_push($aRoster,$temp);
}
/*
// 已建立 PHP 連接資源,也已執行查詢 ($stmt)
// $obj 的內容是PHP物件形式的資料列
while( $obj = sqlsrv_fetch_object( $stmt))
{
 // 一一顯示物件裡的 LastName 及 FirstName
 echo $obj->LastName.", ".$obj->FirstName."</br>";
}
// 以迴圈顯示陣列裡的查詢結果

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))
{
 echo "ProdID: ".$row[0]."</br>";
 echo "UnitPrice: ".$row[1]."</br>";
 echo "StockedQty: ".$row[2]."</br>";
 echo "-----------------</br>";
}*/

sqlsrv_free_stmt( $stmt);
 echo count($aRoster)."<br>";
 echo $aRoster[4]["address"]."<br>";
//以上为数据库查询功能


if( $client_info = sqlsrv_client_info( $conn))
{
 // 以foreach 迴圈顯示 $client_info 陣列內容
 foreach( $client_info as $key => $value)
 {
  echo $key.":".$value."</br>";

 }
}
// 若叫用結果為 false,表示叫用失敗
else
{
 echo "sqlsrv_client_info函式執行有誤</br>";
}
if( $server_info = sqlsrv_server_info( $conn))
{
 // 以foreach 迴圈顯示 $server_info 陣列內容
 foreach( $server_info as $key => $value)
 {
  echo $key.":".$value."</br>";
 }

}
// 若叫用結果為 false,表示叫用失敗
else
{
 echo "sqlsrv_server_info 函式執行有誤 </br>";
}

//sqlserv_close($conn);

/*
$tsql = "--Query 1
  SELECT ProductID, ReviewerName, Rating
  FROM Production.ProductReview
  WHERE ProductID=?;

// 省略連接 SQL Server 的程式碼
// 定義批次查詢
  --Query 2
  INSERT INTO Production.ProductReview (ProductID,
            ReviewerName,
            ReviewDate,
            EmailAddress,
            Rating)
  VALUES (?, ?, ?, ?, ?);

  --Query 3
  SELECT ProductID, ReviewerName, Rating
  FROM Production.ProductReview
  WHERE ProductID=?;";

// 指定參數值並執行查詢
$params = array(798,
    798,
    'CustomerName',
    '2008-4-15',
    'test@supidea.com,
    3,
    798 );
$stmt = sqlsrv_query($conn, $tsql, $params);

// 取得並顯示第 1 次查詢的結果
echo "查詢 1 的結果:<\br>";
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC ))
{
 print_r($row);
}
// 以sqlsrv_next_result 函式將批次查詢的結果移往下一筆
sqlsrv_next_result($stmt);
// 取得並顯示第 2 次查詢的結果
echo "查詢 2 的結果:<\br>";
echo "資料已更新:".sqlsrv_rows_affected($stmt)."</br>";
// 以 sqlsrv_next_result 函式將批次查詢的結果移往下一筆
sqlsrv_next_result($stmt);
// 取得並顯示第 3 次查詢的結果
echo "查詢 3 的結果:<\br>";
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC ))
{
 print_r($row);
}
//更新数据,参数数组
$tsql1 = "UPDATE Production
  SET Quantity = ?
  WHERE ProductID = ?";
// 初始或更新對應到 T-SQL 查詢替代符號的 PHP 變數
// 本例欲將編號為 709 的產品數量更新成 10
$qty = 10;
$productId = 709;
// 以 sqlsrv_query 函式來執行查詢
$stmt1 = sqlsrv_query( $conn, $tsql1, array($qty, $productId));
//批量更新数据
$tsql = "INSERT INTO Sales (SalesOrderID,
      OrderQty,
      ProductID,
      SpecialOfferID,
      UnitPrice)
  VALUES (?, ?, ?, ?, ?)";

// 初始或更新對應到 T-SQL 查詢替代符號的PHP變數
// 以下的每個子陣列會是查詢的參數陣列
// 每個子陣列裡的順序是
// SalesOrderID、OrderQty、ProductID、SpecialOfferID、UnitPrice
$parameters = array( array(43659, 8, 711, 1, 20.19),
     array(43660, 6, 762, 1, 419.46),
     array(43661, 4, 741, 1, 818.70));
// 初始參數值
$orderId = 0;
$qty = 0;
$prodId = 0;
$specialOfferId = 0;
$price = 0.0;
// 準備
$stmt = sqlsrv_prepare( $conn, $tsql, array( $orderId,
         $qty,
         $prodId,
         $specialOfferId,
         $price));
// sqlsrv_ prepare 函式執行失敗會傳回false
if( $stmt === false )
{
 // 向使用者顯示執行失敗的訊息,下一行程式可顯示系統的錯誤訊息
 die( print_r( sqlsrv_errors(), true));
}
// 執行 $parameters 裡每組參數的陳述式
foreach( $parameters as $params)
{
 list($orderId, $qty, $prodId, $specialOfferId, $price) = $params;
 if( sqlsrv_execute($stmt) === false )
 {
  // 向使用者顯示執行失敗的訊息,下一行程式可顯示系統的錯誤訊息
  die( print_r( sqlsrv_errors(), true));
 }
 else
 {
  // 顯示新的資料列,以確認資料列已成功插入
  echo "資料列已改變: ".sqlsrv_rows_affected( $stmt )."<\br>";
 }
}
// 釋放查詢的 PHP 資源
sqlsrv_free_stmt( $stmt);
//按照数据类型插入数据
// 定義查詢
$tsql1 = "INSERT INTO HumanResources.EmployeePayHistory (EmployeeID,
             RateChangeDate,
             Rate,
             PayFrequency)
  VALUES (?, ?, ?, ?)";
// 建構參數陣列
$employeeId = 5;
$changeDate = "2005-06-07";
$rate = 30;
$payFrequency = 2;
$params1 = array(
    // EmployeeID 沒有指定 SQL Server 資料型別,會使用預設型別
    array($employeeId, null),
    // datetime:SQLSRV_SQLTYPE_DATETIME
    array($changeDate, null, null, SQLSRV_SQLTYPE_DATETIME),
    // money:SQLSRV_SQLTYPE_MONEY
    array($rate, null, null, SQLSRV_SQLTYPE_MONEY),
    // tinyint:SQLSRV_SQLTYPE_TINYINT
    array($payFrequency, null, null, SQLSRV_SQLTYPE_TINYINT));
// 執行插入查詢
$stmt1 = sqlsrv_query($conn, $tsql1, $params1);
//*/
?>
<?php

$file = fopen("http://www.supidea.com","r");
fpassthru($file);
/*
// 定義查詢 固定插入数据类型
$tsql1 = "INSERT INTO HumanResources.EmployeePayHistory (EmployeeID,
             RateChangeDate,
             Rate,
             PayFrequency)
  VALUES (?, ?, ?, ?)";
// 建構參數陣列
$employeeId = 5;
$changeDate = "2005-06-07";
$rate = 30;
$payFrequency = 2;
$params1 = array(
    // EmployeeID 沒有指定 SQL Server 資料型別,會使用預設型別
    array($employeeId, null),
    // datetime:SQLSRV_SQLTYPE_DATETIME
    array($changeDate, null, null, SQLSRV_SQLTYPE_DATETIME),
    // money:SQLSRV_SQLTYPE_MONEY
    array($rate, null, null, SQLSRV_SQLTYPE_MONEY),
    // tinyint:SQLSRV_SQLTYPE_TINYINT
    array($payFrequency, null, null, SQLSRV_SQLTYPE_TINYINT));
// 執行插入查詢
$stmt1 = sqlsrv_query($conn, $tsql1, $params1);

// 定義 T-SQL 查詢 按照php数据类型输出数据
$tsql = "SELECT ReviewerName,
   ReviewDate,
   Rating,
   Comments
  FROM Production.ProductReview
  WHERE ProductID = ?
  ORDER BY ReviewDate DESC";
// 設定參數值
$productID = 709;
$params = array( $productID);
// 執行查詢
$stmt = sqlsrv_query($conn, $tsql, $params);
// 取回並顯示資料;取回資料的同時,亦指定成 PHP 資料型別
while ( sqlsrv_fetch( $stmt))
{
 // 不指定;使用預設型別
 echo "Name: ".sqlsrv_get_field( $stmt, 0 )."</br>";
 // 指定成 8 位元字元編碼的字串
 echo "Date: ".sqlsrv_get_field( $stmt, 1, SQLSRV_PHPTYPE_STRING( SQLSRV_ENC_CHAR))."</br>";
 // 不指定;使用預設型別
 echo "Rating: ".sqlsrv_get_field( $stmt, 2 )."</br>";
 echo "Comments: ";
 // 指定成 8 位元字元編碼的資料流
 $comments = sqlsrv_get_field( $stmt, 3, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR));
 fpassthru( $comments);
 echo "</br>";
}
//*/

?>
<?php
function gb2utf($string) {
    $out = iconv( "gb2312", "UTF-8" , $string);
    return $out;
}
 
//example:
$oldword = "中国人abc123";
$newwords = gb2utf($oldword);
echo $newwords;
/*
//sqlsrv_errors的应用
$errors = sqlsrv_errors();
foreach( $errors as $error)
{
 echo "SQLSTATE: ".$error[ 'SQLSTATE']."</br>";
 echo "code: ".$error[ 'code']."</br>";
 echo "message: ".$error[ 'message']."</br>";
}
不過,處理之前,最好先檢查是不是真的有錯誤或警告:
if( ($errors = sqlsrv_errors() ) != null)
{
 // 有錯誤或警告
}
//*/
?>
</body>
</html>
 

Tags:

PHP技术资料

添加评论



(将显示你的Gravatar头像)  

biuquote
微笑得意调皮害羞酷大笑惊讶发呆喜欢可怜尴尬闭嘴噘嘴皱眉伤心抓狂呕吐坏笑漫骂发怒
Loading



Supidea.com 晨飞的梦 @ All Rights Reserved. Powered by BlogYi.NET ver:1.8.0.0. 苏ICP备09011404号

关于博主

kamau
抱着美好的理想背井离乡,这酸甜苦辣只能默默忍受。既然选择了路,就得风雨兼程……

Calendar

<<  二月 2012  >>
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

在日历中查看文章

最近的评论

Comment RSS

声明

      本博所发一切破解相关附件只作学习研究交流之用,严禁用于商业用途,请在下载24小时内删除。
      本博所有网友评论不代表本博立场,版权归其作者所有。

© Copyright 2009