2013-03-11 182 views
0

我的一個網頁我把這個刪除功能通過使刪除功能

$Sql=mysql_query("SELECT Id FROM products"); 
    $Result=mysql_fetch_row($Sql); 
    $Id=$Result[0]; 
    DeleteRecords("products","Id",$Id) 

上的functions.php刪除特定記錄我提出以下

function DeleteRecords($Table,$Exp,$Value) 
{ 
if(isset($_GET['delete'])) 
{ 
$Sql="DELETE FROM $Table WHERE $Exp=$Value"; 
$Result=mysql_query($Sql); 
if($Result) 
    { 
     echo "<script>alert('Record Deleted')</script>"; 
     echo "<script>window.location='products.php';</script>";  
    } 
} 
} 

這個功能現在當我點擊刪除鏈接:

<a href='".$_SERVER['PHP_SELF']."?delete=$Id'>Delete</a> 

它刪除第一行。似乎有一些問題與$ Id

請幫我如何刪除我選擇的行;

最好的是所有的事情都應該在函數中完成,我只需要在我的頁面上調用函數!

+2

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://www.brightmeup.info/article.php?a_id=2)。 – insertusernamehere 2013-03-11 00:29:40

+1

Dude我剛開始學習php我甚至不知道mysql完全如何跳過它! – 2013-03-11 00:32:25

+1

老兄,我們在這裏教你*右*的方式 – Kermit 2013-03-11 00:34:43

回答

0

您選擇所有產品:

$Sql=mysql_query("SELECT Id FROM products"); 

那麼你的第一個元素的ID分配給$Id

$Id=$Result[0]; 

然後,你將$Id到你的函數 - 同樣的值稱爲$Value有:

DeleteRecords("products","Id",$Id) 

終於在你身邊r功能檢查是否設置了$_GET['delete']。如果是,你從結果的第一個元素之前$_GET['delete']使用$Id在刪除查詢(而不是通過值:

$Sql="DELETE FROM $Table WHERE $Exp=$Value"; 

所以你從不使用的$_GET['delete']


你可以寫:

DeleteRecords("products","Id", $_GET['delete']); 

,並在功能:

$Value = intval($Value); 

if (0 != $Value) { 
    $Sql="DELETE FROM $Table WHERE $Exp=$Value"; 
    $Result=mysql_query($Sql); 
    […] 

這至少是某種阻止SQL注入的方式。不適合所有情況,而是一個起點。有一個很好的網站關於"Bobby Tables",可以給你更多的信息。

+0

您能否寄給我正確的密碼?它是我第一次做功能,所以我缺乏概念!但我的刪除isset工作正常,當我mouseover我的刪除鏈接它顯示在URL中的正確的ID,但點擊它刪除 – 2013-03-11 00:44:07

+0

表的第一行,我應該把什麼,而不是我的網頁$ Id? – 2013-03-11 00:57:53

+0

@RaheelExile我假設您的鏈接是通過遍歷所有產品的循環生成的,並且它是每個產品的獨特鏈接?在這種情況下,你不需要改變任何東西。 – insertusernamehere 2013-03-11 01:08:27