Ⅰ 在php中做級聯刪除的sql語句怎麼寫(一般的就行)但要是用觸發器的話在php代碼中又怎麼寫呢
首先說明一下,做級聯最好用ajax實現才好,例如下面這個例子。用ajax 實現三級級聯菜單。
index.php:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Ajax聯動菜單</title>
<script language="javascript" type="text/javascript" src="aa.js"></script>
</head>
<body>
<form>
<label>
<select name="sel" id="sel" onChange="showMenu(this.value);">
<option>一級分類</option>
<?php
$conn = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());
mysql_select_db('fitment', $conn) or die ('Can\'t use database : ' . mysql_error());
mysql_query("set names 'gb2312'");
$str = "SELECT * FROM `fitment_sort` where supid = '0' ORDER BY `id` ASC";
$result = mysql_query($str) or die("Invalid query: " . mysql_error());
if($result)
{
while ($arr = mysql_fetch_array($result)){
echo <<<EOD
<option value={$arr["id"]}>{$arr["name"]}</option>
EOD;
}
}
mysql_close($conn);
?>
</select>
</label>
<label>
<select name="sel2" id="sel2" onChange="showMenu2(this.value)">
<option>二級分類</option>
</select>
</label>
<label>
<select name="sel3" id="sel3">
<option>三級分類</option>
</select>
</label>
</form>
<input type=button value="send value" onClick="alert(document.getElementByIdx('sel').options[document.getElementByIdx('sel').selectedIndex].text + '-' + document.getElementByIdx('sel2').options[document.getElementByIdx('sel2').selectedIndex].text + '-' + document.getElementByIdx('sel3').options[document.getElementByIdx('sel3').selectedIndex].text)">
</body>
</html>
aa.js
<!--
var xmlHttp
var xmlHttp2
//函數showMenu(str) - 功能函數1
function showMenu(str)
{
xmlHttp=GetXmlHttpObject() //調用GetXmlHttpObject()函數,創建XMLHttpRequest對象
if (xmlHttp==null) //如果創建失敗,則
{
alert ("Browser does not support HTTP Request")
return
}
var url="get2.php" //定義url , 其主要讀取資料庫
url=url+"?q="+str
url=url+"&sid="+Math.random() //Math對象的random方法,取隨機數
xmlHttp.onreadystatechange=stateChanged //設置當XMLHttpRequest對象xmlHttp狀態改變時調用的函數,注意函數名後不要添加小括弧
xmlHttp.open("GET",url,true) //使用XMLHttpRequest對象的open()方法 , 創建HTTP請求
xmlHttp.send(null) //使用XMLHttpRequest對象的open()方法 , 發送HTTP請求
}
//函數showMenu(str) - 功能函數1
function showMenu2(str)
{
xmlHttp2=GetXmlHttpObject() //調用GetXmlHttpObject()函數,創建XMLHttpRequest對象
if (xmlHttp2==null) //如果創建失敗,則
{
alert ("Browser does not support HTTP Request")
return
}
var url="get2.php" //定義url , 其主要讀取資料庫
url=url+"?q2="+str
url=url+"&sid="+Math.random() //Math對象的random方法,取隨機數
xmlHttp2.onreadystatechange=stateChanged2 //設置當XMLHttpRequest對象xmlHttp狀態改變時調用的函數,注意函數名後不要添加小括弧
xmlHttp2.open("GET",url,true) //使用XMLHttpRequest對象的open()方法 , 創建HTTP請求
xmlHttp2.send(null) //使用XMLHttpRequest對象的open()方法 , 發送HTTP請求
}
//函數BuildSel() , 根據返回的的字串 , 重新構建新的下拉菜單控制項Select - 功能函數2
function BuildSel(str,sel)
{
//先清空原來的數據.
sel.options.length=0;
//定義一個數組對象
var arrstr = new Array();
//以","號拆分傳入的字串,並存入數組
arrstr = str.split(",");
if(str.length>0)
{
//循環
for(var i=0;i<arrstr.length;i++)
{
var subarrstr=new Array();
//以"|"拆分
subarrstr=arrstr[i].split("|");
sel.options.add(new Option(subarrstr[1],subarrstr[0]));
}
sel.options[0].selected=true;
}
}
//函數stateChanged() - 響應HTTP請求狀態變化
function stateChanged()
{
//判斷XMLHttpRequest對象的readyState屬性值是否為4,如果為4表示非同步調用完成(注意:非同步調用完成 不代表非同步調用成功)
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
//如果非同步調用成功 --> XMLHttpRequest對象的status屬性值為200 , html文件在本地運行,則xmlHttp.status的返回值為0,故應該加上xmlHttp.status==0
if(xmlHttp.status==200 || xmlHttp.status==0)
{
//調用文檔對象模型DOM的getElementById()方法查找html文件中的標簽txtHint ,
//innerHTML為IE瀏覽器中的屬性,可以用來更改標簽間文本的內容 ,
//xmlHttp.responseText , 通過XMLHttpRequest的responseText屬性來獲取數據 responseText,結果為字元串;responseXML,結果為XML形式
// document.getElementByIdx("txtHint").innerHTML=xmlHttp.responseText
BuildSel(xmlHttp.responseText,document.getElementsByTagName_r("*").sel2)
showMenu2(document.getElementsByTagName_r("*").sel2.value);
}
}
}
//函數stateChanged() - 響應HTTP請求狀態變化
function stateChanged2()
{
//判斷XMLHttpRequest對象的readyState屬性值是否為4,如果為4表示非同步調用完成(注意:非同步調用完成 不代表非同步調用成功)
if (xmlHttp2.readyState==4 || xmlHttp2.readyState=="complete")
{
//如果非同步調用成功 --> XMLHttpRequest對象的status屬性值為200 , html文件在本地運行,則xmlHttp.status的返回值為0,故應該加上xmlHttp.status==0
if(xmlHttp2.status==200 || xmlHttp2.status==0)
{
//調用文檔對象模型DOM的getElementById()方法查找html文件中的標簽txtHint ,
//innerHTML為IE瀏覽器中的屬性,可以用來更改標簽間文本的內容 ,
//xmlHttp.responseText , 通過XMLHttpRequest的responseText屬性來獲取數據 responseText,結果為字元串;responseXML,結果為XML形式
// document.getElementByIdx("txtHint").innerHTML=xmlHttp.responseText
BuildSel(xmlHttp2.responseText,document.getElementsByTagName_r("*").sel3)
}
}
}
//函數GetXmlHttpObject() - 創建XMLHttpRequest對象,即創建一個非同步調用對象
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
-->
get2.php
<?php
//指定編碼
header('Content-Type:text/html;charset=GB2312');
//連接、選擇資料庫,設置字元集
$conn = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());
mysql_select_db('fitment', $conn) or die ('Can\'t use database : ' . mysql_error());
mysql_query("set names 'gb2312'");
//如果傳遞過來q
if($_GET["q"]){
$strs = "SELECT * FROM fitment_sort WHERE supid=' ".$_GET["q"]."' ";
//echo $str;
$results = mysql_query($strs) or die("Invalid query: " . mysql_error());
if($results)
{
while ($arrs = mysql_fetch_array($results)){
$strings .= $arrs["id"]."|".$arrs["name"].",";
}
echo substr($strings,0,strlen($strings)-1);
}
}
//如果傳遞過來q2
if($_GET["q2"]){
$str = "SELECT * FROM fitment_sort WHERE supid= '".$_GET["q2"]."'";
//echo $str;
$result = mysql_query($str) or die("Invalid query: " . mysql_error());
if($result)
{
while ($arr = mysql_fetch_array($result)){
$string .= $arr["id"]."|".$arr["name"].",";
}
//去掉字串最後一個字元","
echo substr($string,0,strlen($string)-1);
}
}
mysql_close($conn);
?>
刪除的sql語句
delete from class where classid=$_GET[classid]
其中是$_GET[classid] 是選項中 option 的值就可以了。
Ⅱ php 查詢sql server後,用while循環顯示,每條的後面如何加上 修改,刪除功能
對於添加【刪除】、【修改】等按鈕,與具體資料庫無關,對於這類界面方面的編程無論什麼資料庫法都是一樣的。
如果你輸出每一條數據的內容為:
echo '欄位值...';
那麼添加【刪除】按鈕(修改類似)的語句為:
echo '欄位值...';
echo "<a href='del.php?key=".$row['key']."'>刪除</a>";
上面的KEY是數據的關鍵欄位(術語為【主鍵】),一般可能就是ID,是唯一代表這條數據的標志性數值,例如學生表的學號等。強調一下,一般資料庫都應該有個ID,否則無法編程的。
再強調一次,學習此類編程的時候,不要在乎是SQL SERVER資料庫呢還是MYSQL、ORACLE等等,他們只是MYSQL_QUERY,MSSQL_QUERY等語句的第一個單詞不同而已,其它區別可能還有欄位名使用中括弧、反單引號等簡單區別,語句的結構是一致的。
Ⅲ php批量執行sql語句怎麼寫
php中利用數組用Mysql_query批量執行SQL語句。
參考示例如下:
思路:這里採用一個數組.用explode 函數,將$query語句按照」;」炸開,然後循環執行即可:
$query = 'delete from ecs_goods_attr where attr_id=11 and goods_id=22;
Insert into ecs_goods_attr (goods_attr_id,goods_id,attr_id,attr_value,attr_price)values(Null,33,138,"膽略",0);
update ecs_goods set goods_number=10,shop_price=55 where goods_id=33;'
$query_e = explode(';','$query');
foreach ($query_e as $k =>$v)
{
mysql_query($query_e[$k]);
}
這樣 $query語句就被批量的執行了。
Ⅳ php刪除sql資料庫的語句
MySQL為我們提供了delete和truncate語句來刪除數據。
delete 語句的定義:
刪除數據的時候用的大多都是 delete 語句。現在讓我們來看一下 delete語句的定義。
DELETE[LOW_PRIORITY][QUICK][IGNORE]FROMtbl_name
[WHEREwhere_definition]
[ORDER BY...]
[LIMITrow_count]
deletefromfriendswhereuser_name='simaopig';
delete 注意事項:
從語法結構中,我們就可以看出,和 update 語法一樣,我們是可以省略 where 子句的。不過這是一個很危險的行為。因為如果不指定 where 子句,delete 將手猜刪除表中所有的記錄,而且是立即刪除.
truncate 語句的簡單說明:
這個語句之前我也沒有接觸過,也沒有使用過歲廳。因為一般情況下,刪除數據大家都在使用delete語句。其實這個truncate 命令很簡單,它的意思是:刪除表的所有記錄。相當於 delete 語句不寫 where 子句一樣。其語法結構為:
TRUNCATE[TABLE]tbl_name
這里簡單的給出個示例,我想刪除 friends 表中所有的記錄,可以使用如下語句:
truncatetablefriends;
truncate 和 delete的效率問題:
如果想要刪除表的所有數據,truncate語句要比 delete 語句快。因為 truncate 刪除了表,然後根據表結構重新建立它,而 delete 刪除的是記錄,並沒有嘗試乎薯隱去修改表。這也是為什麼當向一個使用 delete 清空的表插入數據時,MySQL 會記住前面產生的AUTOINCREMENT序列,並且繼續利用它對AUTOINCREMENT欄位編號。而truncate刪除表後,表是從1開始為autoincrement欄位編號。
不過truncate命令快規快,卻不像delete命令那樣對事務處理是安全的。因此,如果我們想要執行truncate刪除的表正在進行事務處理,這個命令就會產生退出並產生錯誤信息。