9.1.4 使用Insert語句實現用戶註冊對於專門爲數據庫設計的語言來說,SQL是一種數據庫操做技術,能夠對數據庫進行添加、修改、刪除等一系列操做。javascript 當由記錄表示的一個新實體出現時,一般就把一個新的數據記錄添加到關係數據庫中。實現數據的添加操做可以使用Insert語句完成,具體的語法請讀者參見本書11.6.1節。php 數據添加主要應用到以下幾個函數,下面分別進行介紹。java 1.mysql_query()函數mysql_query()函數用來根據鏈接標識符向指定數據庫服務器的當前數據庫發送查詢。語法以下:mysql int mysql_query(string query ,int [link_identifier]);sql 其中,query是查詢字符串;link_identifier是數據庫鏈接標識符。數據庫 mysql_query()在執行成功時返回一個結果標識符,失敗時返回FALSE。express 2.mysql_fetch_array()函數mysql_fetch_array()函數用來從結果集取得的行生成數組。語法以下:數組 array mysql_fetch_array(int result,int[result_type]);安全 其中,result_type參數是一個常量,可選項,能夠接受如下值(默認值爲MYSQL_BOTH):服務器 MYSQL_ASSOC:只獲得關聯索引。 MYSQL_NUM:只獲得數字索引。 MYSQL_BOTH:將獲得一個同時包含關聯和數字索引的數組。 注意:mysql_fetch_array()函數返回的字段名區分大小寫。 mysql_fetch_array()函數先提取出查詢結果的第一行的內容,這個函數的參數就是mysql_query()函數返回的整數標誌。而mysql_fetch_array()執行成功後,記錄集指針會自動下移,這樣當再一次執行mysql_fetch_array()時,獲得的就是下一行記錄的內容了。 下面經過具體的範例來說解Insert語句在PHP中的應用。
數據添加是Web程序或網站最基本的功能之一(基本功能爲添加、修改、刪除、查詢等),任何一個Web程序或網站的後臺管理頁面都要提供數據添加的功能。向數據表中插入數據能夠經過Insert語句實現。本範例經過Insert語句實現了用戶註冊功能,運行結果如圖9.2所示。 本範例的設計思路以下。 (1)本範例在註冊用戶時,因爲不能存在一樣的用戶名,所以須要首先對用戶名進行判斷。在「用戶名」文本框中輸入用戶名稱,單擊「檢測用戶」超連接,經過window.open打開一個用戶檢測的用戶對話框,對輸入的用戶進行檢測,並對檢測結果給出相應的提示。代碼以下: <script language="javascript"> function openwin(x){ if (x==""){ alert("請輸入用戶名!"); myform.UserName.focus();return false; } else{ window.open("submit_checkuser.php?x="+x,"newframe","width=300,height=150"); } } </script> <a href="#" onClick="javascript:openwin(myform.UserName.value)">[檢測用戶]</a> 圖9.2 錄入數據 (2)利用$_GET[x]將文本框的值傳遞到數據處理頁(submit_checkuser.php),可檢測用戶名稱是否存在,代碼以下: <?php include "Conn/conn.php"; $UserName=$_GET[x]; $sql=mysql_query("select * from tb_user where Username = '$UserName'"); $result=mysql_fetch_array($sql); if ($result!=false){ echo ("[<font color=red>".$UserName."</font>]已被註冊!"); } else{ echo ("恭喜您!用戶名[<font color=green>".$UserName."</font>]能夠註冊!"); } ?> (3)當用戶按要求填寫用戶信息後,單擊【肯定保存】按鈕將數據提交到數據處理頁(register_deal.php)進行數據處理。 (4)在數據處理頁register_deal.php中利用include包含文件命令引用數據庫配置文件,訪問數據庫。代碼以下: <? php include "Conn/Conn.php"; ?> (5)將從表單中提取的數據存儲到變量中,使用Insert語句將用戶填寫的數據做爲新記錄插入到數據表中,並彈出「用戶註冊成功」提示框。程序代碼以下: <?php $UserName=$_POST[UserName]; $TrueName=$_POST[TrueName]; $PWD=$_POST[PWD1]; $ICO=$_POST[ICO]; $Sex=$_POST[Sex]; $birthday=$_POST[Birthday]; $Email=$_POST[Email]; $Tel=$_POST[Tel]; $homepage=$_POST[Homepage]; $OICQ=$_POST[OICQ]; $Address=$_POST[Address]; $INS=mysql_query("Insert Into tb_user (Username,Pwd,TrueName,ICO,Sex,birthday,Email,Tel, homepage,OICQ,Address) Values('$UserName','$PWD','$TrueName','$ICO','$Sex','$birthday','$Email',' $Tel', '$homepage','$OICQ','$Address')"); $result1=mysql_fetch_array($INS); echo "<script> alert('用戶註冊成功!');</script>"; echo "<script> window.location='index.php';</script>"; ?> 9.1.5 使用Update語句實現批量更新用戶狀態批量數據更新在數據庫中的應用是比較普遍的,並且經過批量數據更改能夠達到省時省力、提升效率的目的。 批量更新數據主要應用到了Update語句和In子句。Update語句的語法請讀者參見本書11.6.2節。下面介紹一下In子句的用法。 In子句用於肯定給定的值是否與子查詢或列表中的值相匹配。語法以下: test_expression [ NOT ] IN ( subquery | expression [ ,...n ] ) 其中,參數test_expression表明全部有效的Microsoft® SQL Server™表達式;參數subquery包含某列結果集的子查詢;參數expression [,...n]表示一個表達式列表,用來測試是否匹配。全部的表達式必須與test_expression具備相同的類型。 下面的範例主要應用Update語句實現批量更新用戶狀態。
通常在設計用戶權限或是更改工資級別時都會用到批量更新,批量更新的好處是速度快、安全性高。在本範例中,利用批量更新更改用戶狀態。選擇要操做的用戶,單擊【激活】或【凍結】按鈕,便可將用戶設爲激活或凍結狀態。程序運行結果如圖9.三、圖9.4所示。
圖9.3 選中欲更新的用戶 圖9.4 批量更新用戶狀態 本範例的實現過程以下。 (1)利用include包含文件命令引用數據庫配置文件,訪問數據庫。代碼以下: <?php include "conn/conn.php"; ?> (2)利用Do…while循環語句輸出用戶信息,將每條記錄前面加上覆選框,並進行相關屬性值設置。代碼以下: <form name="form1" method="post" action="index.php" onSubmit="Checker()"> <table width="349" border="1" align="center" cellspacing="0" > <tr align="center" bgcolor="#efefef"> <td height="36" colspan="3">用戶列表 </td> </tr> <?php $sql=mysql_query("select * from tb_member"); $result=mysql_fetch_array($sql); do { ?> <tr align="center"> <td width="108"><input name="id" type="checkbox" id="id" value="<?php echo $result[M_ID]; <td width="131"><?php echo $result[M_Name]; ?></td> <td width="88"><?php echo $result[Grade]; ?></td> </tr> <?php }while($result=mysql_fetch_array($sql)); ?> <tr align="center"> <input type="hidden" name="items" value="<?php echo $item; ?>"> <td colspan="3"><input type="submit" name="Submit" value="激活" > <input type="reset" name="Submit" value="重置"> <input type="submit" name="Submit" value="凍結"> </tr> </table> <p> </p> </form> (3)PHP接收多個同名複選框信息,不像JSP那樣能夠自動轉換成爲數組,這給使用者帶來了必定的不便。可是仍是有解決辦法的,即利用JavaScript腳本作一下預處理。當提交表單時,調用cheaker()函數,多個同名複選框在JavaScript腳本中仍是以數組的形式存在的,因此在表單提交以前,能夠利用JavaScript把複選框中的信息組合成一個字符串賦值給表單中的隱藏元素。代碼以下: <script language="javascript"> function Checker(){ form1.items.value = ""; //設置隱藏域的值爲空 if ( !form1.id.length ) { //只有一個複選框,form1.item.length = undefined if ( form1.id.checked ){ form1.items.value = form1.id.value; } }else { var temp=""; for ( i = 0 ; i < form1.id.length ; i++ ){ if ( form1.id(i).checked ){ //複選框中有選中的框 temp=temp+form1.id(i).value+","; //使用","分隔符將數組元素組合成一個字符串 } } temp=temp.substring(0,temp.length-1); //去除字符串末尾多餘的"," form1.items.value = temp; //將變量賦值給隱藏域 } } </script> (4)將隱藏域的值賦給變量item,這樣就能夠實現複選框信息的傳遞了。再使用Update語句和In子句對選中的用戶進行批量更新。代碼以下: <?php $item = $POST[items]; if( $item<>""){ if ($_POST[Submit]=="激活"){ $sql=mysql_query("update tb_member set Grade='激活' where M_ID in (".$item.")"); $result=mysql_fetch_array($sql); } else{ $sql=mysql_query("update tb_member set Grade='凍結' where M_ID in (".$item.")"); $result=mysql_fetch_array($sql); } } else{ echo "<div align='center' style='color:#FF0000; font-size:12px'>請選擇一個用戶</div>"; } ?> 9.1.6 使用Delete語句實現批量刪除用戶信息批量數據的刪除在各大中小型網站及管理系統中應用最爲普遍。批量刪除數據是經過Delete語句實現的。 例如,批量刪除圖書信息表中圖書名稱包含「PHP」的數據信息,代碼以下: $sql=mysql_query("Delete from tab_book where bookname like '%".php."%'"); $result=mysql_fetch_array($sql); 下面的範例主要應用複選框實現數據的批量刪除。
在對數據進行刪除時,有不少種方法。本範例主要經過複選框實現數據的批量刪除。運行本範例,選擇要刪除的數據前的複選框,單擊【刪除】按鈕,此時全部被選中的數據將所有被刪除。刪除圖書信息前及刪除圖書後的運行結果如圖9.五、圖9.6所示。 圖9.5 批量刪除數據前 圖9.6 批量刪除數據後 本範例主要應用Delete語句和In子句實現批量數據刪除操做。Delete語句的語法請讀者參見本書11.6.3節。 本範例的實現過程以下。 (1)利用包含文件命令include引用數據庫配置文件,便可訪問數據庫。代碼以下: <?php include "Conn/conn.php"; ?> (2)利用Do…While語句將數據表中的全部記錄顯示出來,並將每條記錄前面加上覆選框。添加Form表單及複選框,並進行相關屬性值的設置。代碼以下: <form name="form1" method="post" action="index.php" onSubmit="Checker()"> <table width="770" border="1" align="center" cellpadding="1" cellspacing="1" bordercolor="#73BA08" > <tr> <td height="244" colspan="7" background="p_w_picpaths/bg.jpg"> </td> </tr> <?php $sql=mysql_query("select * from tab_book"); $info=mysql_fetch_array($sql); do { ?> <tr> <td width="26"><input name="id" type="checkbox" id="id" value="<?php echo $info[id]; ?>"> </td> <td width="161"><?php echo $info[bookname]; ?></td> <td width="72"><?php echo $info[issuDate]; ?></td> <td width="29"><?php echo $info[price]; ?></td> <td width="170"><?php echo $info[synopsis]; ?></td> <td width="73"><?php echo $info[Maker]; ?></td> <td width="89"><?php echo $info[pulisher]; ?></td> </tr> <?php }while($info=mysql_fetch_array($sql)); ?> <tr align="center"> <input type="hidden" name="items" value="<?php echo $item; ?>"> <td colspan="7"><input type="submit" name="Submit" value="刪除" > <input type="reset" name="Submit" value="重置"> </tr> </table> </form> (3)當提交表單時,調用cheaker()函數,利用JavaScript腳本把複選框中的信息組合成一個字符串,賦值給表單中的隱藏元素。代碼以下: <script language="javascript"> function Checker(){ form1.items.value = ""; //設置隱藏域的值爲空 if ( !form1.id.length ) { //只有一個複選框,form1.item.length = undefined if ( form1.id.checked ){ form1.items.value = form1.id.value; } }else { var temp=""; for ( i = 0 ; i < form1.id.length ; i++ ){ if ( form1.id(i).checked ){ //複選框中有選中的框 temp=temp+form1.id(i).value+","; //將數組中的元素使用","分隔 } } temp=temp.substring(0,temp.length-1); //去除字符串末尾多餘的"," form1.items.value = temp; //將變量賦值給隱藏域 } } </script> (4)將隱藏域的值賦給變量item,這樣就能夠實現複選框信息的傳遞了。經過單擊【刪除】按鈕,將複選框選擇的任意一條或多條記錄刪除。代碼以下: <?php $item = $_POST[items]; if( $item<>""){ if ($_POST[Submit]=="刪除"){ $sql=mysql_query("Delete from tab_book where id in (".$item.")"); $result=mysql_fetch_array($sql); } } else{ echo "<div align='center' style='color:#FF0000; font-size:12px'>請選擇欲刪除的圖書項目</div>"; } ?> |