[PHP][MSSQL]PHP搭配SQL Server(MSSQL)的基本操作

[PHP][MSSQL]PHP搭配SQL Server(MSSQL)的基本操作

[鐵人賽Day29]PHP搭配SQL Server(MSSQL)的基本操作

延續上一篇「[PHP][MSSQL]PHP連結SQL Server(MSSQL)的方法與測試連線
今天要來提的是PHP連線MSSQL後的搜尋資料、新增資料、更新(修改)資料、刪除資料

其實,說破一點,就是在SQL指令上動手腳而已
而這邊要注意的是,由於MSSQL的編碼是BIG5,所以要是網頁編碼是UTF-8會抓出資料產生亂碼
同時,沒有指定編碼的話,在寫入資料時,也會因為不是BIG5而令寫入的資料變為亂碼
解決方法:在$connectionInfo連線資料的地方,加上"CharacterSet"=>"UTF-8"(指定資料傳送到伺服器的編碼)即可解決此問題
(參考資料:http://msdn.microsoft.com/en-us/library/ff628167.aspx)

在這之後要與各位分享的是,簡易的新增資料、更新(修改)資料、刪除資料的實作,有興趣的讀者可以複製回自己的環境試看看,請服用@@(只是體驗一下動作如何進行,真要使用請修改後再使用)

資料庫:ithome_test
資料表:good_idea
欄位1:id 型別:int Other:自動編號
欄位2:idea1 型別:varchar(50)
欄位3:idea2 型別:varchar(50)

(以下說明,皆是一個操作介面搭配一個動作)
先來說INSERT,新增資料的地方
「mssql_input_insert.php」

<html>
    <head>
        <title>MSSQL新增資料</title>
        <meta http-equiv="content-type" content="text/html" charset="UTF-8"/>
    </head>
    <body>
    <h1>新增資料到MSSQL</h1>
        <form method="POST" action="./mssql_insert.php">
            輸入值1:<input id="idea1" name="idea1" type="text" /><br />
            輸入值2:<input id="idea2" name="idea2" type="text" /><br />
            <input id="submit" name="submit" type="submit" value="確定送出" />
        </form>
    </body>
</html>

(注意:這邊所有的SQL語法內皆不能有「前導符號 [ ˋ ]」)
「mssql_insert.php」

<html>
    <head>
        <title>MSSQL新增資料</title>
        <meta http-equiv="content-type" content="text/html" charset="UTF-8"/>
    </head>
    <body>
    <h1>新增資料到MSSQL</h1>
    <?php
        $serverName="127.0.0.1\SQLEXPRESS, 1433";
        $connectionInfo=array("Database"=>"ithome_test", "UID"=>"sa", "PWD"=>"mssql_test", "CharacterSet"=>"UTF-8");
        $conn=sqlsrv_connect($serverName, $connectionInfo);
      
        $idea1=$_POST['idea1'];
        $idea2=$_POST['idea2'];
      
        echo "輸入值1:".$idea1;
        echo "<br />";
        echo "輸入值2:".$idea2;
        echo "<br /><br />";
      
       $sql="INSERT INTO good_idea(idea1,idea2) VALUES('$idea1','$idea2')";
       $query=sqlsrv_query($conn,$sql)or die("sql error".sqlsrv_errors());
     
       $sql2="select * from good_idea";
       $result=sqlsrv_query($conn,$sql2)or die("sql error".sqlsrv_errors());
      
       echo "讀取good_idea的值:<br />";
       while($row=sqlsrv_fetch_array($result)){
             echo ("<table border=1px><tr>");
             echo ("<td>編號:").$row["id"].("</td>");
             echo ("<td>輸入值1:").$row["idea1"].("</td>");
             echo ("<td>輸入值2:").$row["idea2"].("</td>");
             echo ("</tr></table>");
             echo ("<hr />");
       }
    ?>
    </body>
</html>

輸出畫面如以下圖示:

--------------------以上為INSERT,以下為UPDATE--------------------

接著是UPDATE更新的部分,這邊是事先就帶出部分值給使用者選擇將更新的資料
(友人:本來就是這樣不是嗎,不然要怎找要改的資料)
「mssql_input_update.php」

<html>
    <head>
        <title>MSSQL更新資料</title>
        <meta http-equiv="content-type" content="text/html" charset="UTF-8"/>
    </head>
    <body>
    <h1>更新MSSQL資料</h1>
    <form method="POST" action="./mssql_update.php">
        原先idea1值:<select id="check" name="check">
    <?php
        $serverName="127.0.0.1\SQLEXPRESS, 1433";
        $connectionInfo=array("Database"=>"ithome_test", "UID"=>"sa", "PWD"=>"mssql_test", "CharacterSet"=>"UTF-8");
        $conn=sqlsrv_connect($serverName, $connectionInfo);
        
        $sql2="select * from good_idea";
        $result=sqlsrv_query($conn,$sql2)or die("sql error".sqlsrv_errors());
       
        while($row=sqlsrv_fetch_array($result)){
            echo ('<option value="'.$row['id'].'">').$row['id'].('-').$row['idea1'].('</option>');
       }
    ?>  
            </select>     
            <br />
            輸入值1更改為:<input id="idea1" name="idea1" type="text" /><br />
            輸入值2更改為:<input id="idea2" name="idea2" type="text" /><br />
            <input id="submit" name="submit" type="submit" value="確定送出" />
        </form>
    </body>
</html>


「mssql_update.php」

<html>
    <head>
        <title>MSSQL更新資料</title>
        <meta http-equiv="content-type" content="text/html" charset="UTF-8"/>
    </head>
    <body>
    <h1>更新MSSQL資料</h1>
    <?php
        $serverName="127.0.0.1\SQLEXPRESS, 1433";
        $connectionInfo=array("Database"=>"ithome_test", "UID"=>"sa", "PWD"=>"mssql_test", "CharacterSet"=>"UTF-8");
        $conn=sqlsrv_connect($serverName, $connectionInfo);
      
        $check=$_POST['check'];
        $idea1=$_POST['idea1'];
        $idea2=$_POST['idea2'];
       
        echo "修改的id值:".$check;
        echo "<br />";
        echo "輸入值1:".$idea1;
        echo "<br />";
        echo "輸入值2:".$idea2;
        echo "<br /><br />";
      
       $sql="UPDATE good_idea SET idea1='$idea1',idea2='$idea2' WHERE id='$check'";
       $query=sqlsrv_query($conn,$sql)or die("sql error".sqlsrv_errors());
     
       $sql2="select * from good_idea";
       $result=sqlsrv_query($conn,$sql2)or die("sql error".sqlsrv_errors());
      
       echo "讀取good_idea的值:<br />";
       while($row=sqlsrv_fetch_array($result)){
             echo ("<table border=1px><tr>");
             echo ("<td>編號:").$row["id"].("</td>");
             echo ("<td>輸入值1:").$row["idea1"].("</td>");
             echo ("<td>輸入值2:").$row["idea2"].("</td>");
             echo ("</tr></table>");
             echo ("<hr />");
       }
    ?>
    </body>
</html>


輸出畫面如以下圖示:

--------------------以上為UPDATE,以下為DELETE--------------------

好了,接著要說最後一個基本功能刪除資料
這是一個很強大很恐怖,執行了就不見的功能,慎用!
(啊~~~嚇死人的功能啊~~~(你是在叫魂唷(台語)=口=))

(DELETE操作介面與UPDATE操作介面大同小異(是根本一樣好嗎...不過是改幾個字))
「mssql_input_delete.php」

<html>
    <head>
        <title>MSSQL刪除資料</title>
        <meta http-equiv="content-type" content="text/html" charset="UTF-8"/>
    </head>
    <body>
    <h1>刪除MSSQL資料</h1>
    <form method="POST" action="./mssql_delete.php">
        請選擇要刪除的idea1值:<select id="check" name="check">
    <?php
        $serverName="127.0.0.1\SQLEXPRESS, 1433";
        $connectionInfo=array("Database"=>"ithome_test", "UID"=>"sa", "PWD"=>"mssql_test", "CharacterSet"=>"UTF-8");
        $conn=sqlsrv_connect($serverName, $connectionInfo);
       
        $sql2="select * from good_idea";
        $result=sqlsrv_query($conn,$sql2)or die("sql error".sqlsrv_errors());
      
        while($row=sqlsrv_fetch_array($result)){
            echo ('<option value="'.$row['id'].'">').$row['id'].('-').$row['idea1'].('</option>');
       }
    ?> 
            </select>    
            <br />
            <input id="submit" name="submit" type="submit" value="確定送出" />
        </form>
    </body>
</html>

「mssql_delete.php」

<html>
    <head>
        <title>MSSQL刪除資料</title>
        <meta http-equiv="content-type" content="text/html" charset="UTF-8"/>
    </head>
    <body>
    <h1>刪除MSSQL資料</h1>
    <?php
        $serverName="127.0.0.1\SQLEXPRESS, 1433";
        $connectionInfo=array("Database"=>"ithome_test", "UID"=>"sa", "PWD"=>"mssql_test", "CharacterSet"=>"UTF-8");
        $conn=sqlsrv_connect($serverName, $connectionInfo);
      
        $check=$_POST['check'];
      
       $sql="DELETE FROM good_idea WHERE id='$check'";
       $query=sqlsrv_query($conn,$sql)or die("sql error".sqlsrv_errors());
       if($query){
            echo '刪除id值:'.$check.'成功<br />';
       }else{
            echo "刪除失敗,請檢查內碼並除BUG<br />";
       }
      
       $sql2="select * from good_idea";
       $result=sqlsrv_query($conn,$sql2)or die("sql error".sqlsrv_errors());
      
       echo "讀取good_idea的值:<br />";
       while($row=sqlsrv_fetch_array($result)){
             echo ("<table border=1px><tr>");
             echo ("<td>編號:").$row["id"].("</td>");
             echo ("<td>輸入值1:").$row["idea1"].("</td>");
             //echo "輸入值1:".$row[0];
             echo ("<td>輸入值2:").$row["idea2"].("</td>");
             //echo "輸入值2:".$row[1];
             echo ("</tr></table>");
             echo ("<hr />");
       }
    ?>
    </body>
</html>

輸出畫面如以下圖示:

--------------------完成FINISH--------------------

PHP搭配SQL Server(MSSQL)篇,介紹完畢,多謝各位觀看