2013-05-08 57 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

相关问题