2013-05-08 55 views
0

我在我的數據庫中有一個名爲「users」的表。我的表格有2列「user_id」和「profile」。 user_id保留當前登錄的用戶的id。配置文件保留用戶上載到他的個人資料頁面的圖像的url。我想要的只是創建一個按鈕,它將刪除登錄用戶的配置文件列的內容。任何想法如何繼續?使用按鈕刪除表中列的內容

<?php      
function deleteimage($user_id){ 
$sql="DELETE `profile` FROM `users` WHERE 'user_id' = $user_id;"; 
$result=mysql_query($sql) or die("Error when trying to delete..."); 
} 
?> 

<input type="button" value="Delete"> 

回答

-1

你需要設置你的數據庫的連接第一。

我有三個文件,主要的PHP腳本像你這樣,一個DB_CONFIG文件:

<?php 
/** 
* Database config variables 
*/ 
define("DB_SERVER", "%address%"); 
define("DB_USER", "%username%"); 
define("DB_PASSWORD", "%password%"); 
define("DB_DATABASE", "%dbname%"); 
?> 

然後,連接實用程序腳本:

<?php 

/** 
* A class file to connect to database 
*/ 
class DB_CONNECT { 

    // constructor 
    function __construct() { 
     // connecting to database 
     $this->connect(); 
    } 

    // destructor 
    function __destruct() { 
     // closing db connection 
     $this->close(); 
    } 

    /** 
    * Function to connect with database 
    */ 
    function connect() { 
     // import database connection variables 
     require_once __DIR__ . '/db_config.php'; 

     // Connecting to mysql database 
     $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error()); 

     // Selecing database 
     $db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error()); 

     // returing connection cursor 
     return $con; 
    } 

    /** 
    * Function to close db connection 
    */ 
    function close() { 
     // closing db connection 
     mysql_close(); 
    } 

} 

?> 

然後你就可以在你的主腳本中使用這打開連接:

// include db connect class 
require_once __DIR__ . '/db_connect.php'; 

在開始時打開連接到您的數據庫。然後,您可以按照上面的問題進行查詢。這種格式使查詢從多個PHP腳本進行查詢成爲一件好事,因爲連接器是一個單獨的類。

然後,您可以做邏輯的按鈕被點擊

時爲了去除圖像URL執行該SQL查詢你想要的東西像

UPDATE `users` SET `profile` = NULL WHERE `user_id` = $user_id 

你不能直接訪問按鈕點擊作爲它是。 PHP只是告訴客戶端頁面顯示一個按鈕。如果你想receieve當它被點擊你需要使用像象下面這樣POST自我推薦,使一個按鈕,點擊它時,將信號發送回服務器頁面:

<form action="<?=$_SERVER['PHP_SELF'];?>" method="post"> 
<input type="submit" name="submit" value="Click Me"> 
</form> 

然後,在頂部你可以做的PHP頁面

if(isset($_POST['submit'])) { 
    deleteimage($user_id); 
} 

要運行該功能,只有在點擊按鈕後才能執行URL刪除功能。

要將您的腳本遷移到MYSQLI以便將來兼容,請參閱Oracle Wiki指南here

它有一個工具,您可以指向您的PHP腳本,它會爲您做出更改。我花了大約2分鐘,我所有的腳本轉換

希望這是有益

+0

我已經嘗試過,看起來很棒,直到現在,任何想法如何讓按鈕調用更新'用戶'設置'配置文件'=空WHERE'user_id' = $ user_id – 33528 2013-05-08 11:00:31

+0

我將更新我的答案以顯示 – o0rebelious0o 2013-05-08 11:02:14

+0

我將它們按以下順序排列:1.function deleteimage 2.if(isset($ _ POST ['submit']))and 3. the form。現在的問題是,我收到消息Undefined variable:user_id。我使用的順序有問題嗎? – 33528 2013-05-08 11:19:25

1

DELETE關鍵字是行不列

如果要清空一列,你會UPDATE記錄

"UPDATE `users` SET `profile` = NULL WHERE `user_id` = $user_id;" 

或者,如果你profile列不接受NULL值

"UPDATE `users` SET `profile` = '' WHERE `user_id` = $user_id;" 

但是,您應該使用mysqli_PDO作爲mysql_功能已被取消,從PHP

而且被刪除,請確保您逃離$user_id變量要傳遞到該方法,否則可能會留下自己打開到SQL注入漏洞

+1

或「」,而不是NULL,如果列設置爲NOT NULL – RMcLeod 2013-05-08 10:51:00

+0

@RMcLeod非常真實,好點 – fullybaked 2013-05-08 10:52:56

0

你必須設置1個全局變量,它將包含登錄用戶的user_id。

然後在按鈕上單擊,可以使用GET或POST調用帶有此user_id(全局變量)值的PHP作爲參數。

它應該工作。

如果你想列
1

emply您還可以設置空值或Null值

UPDATE `users` SET `profile` = '' WHERE 'user_id' = $user_id; 

UPDATE `users` SET `profile` = NULL WHERE 'user_id' = $user_id; 
+0

你需要把各地的反引號where子句中的'user_id'列。目前它的字符串會導致SQL錯誤。只是一個頭。 – fullybaked 2013-05-08 11:18:05

+0

我只是從我的管理員粘貼從靜態和變化變量對不起, – liyakat 2013-05-08 11:56:57

相關問題