【问题标题】:delete contents of a column in a table using button使用按钮删除表中列的内容
【发布时间】:2013-05-08 10:46:15
【问题描述】:

我的数据库中有一个名为“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">

【问题讨论】:

    标签: php


    【解决方案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 注入漏洞

    【讨论】:

    • 如果列设置为 NOT NULL,则使用 '' 而不是 NULL
    【解决方案2】:

    如果要使列 emply 也可以设置空白值或 Null 值

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

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

    【讨论】:

    • 您需要在 where 子句中的 user_id 列周围加上反引号。目前它是一个会导致 SQL 错误的字符串。只是提醒一下。
    • 我只是从我的管理员的 php 中粘贴静态变量并更改变量对不起
    【解决方案3】:

    您必须设置 1 个全局变量,其中将包含登录用户的 user_id。

    点击按钮后,您可以使用 GET 或 POST 调用 PHP,并将此 user_id(全局变量)值作为参数。

    它应该可以工作。

    【讨论】:

      【解决方案4】:

      您需要先建立与数据库的连接。

      我有三个文件,像你这样的主要 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 脚本的查询作为单独的类作为连接器变得既好又容易。

      然后,您可以在单击按钮时执行该 SQL 查询的逻辑

      为了删除你想要的图片网址

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

      您不能直接访问按钮单击。 PHP 只是告诉客户端页面显示一个按钮。如果您想在点击时接收,您需要使用类似下面的 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 分钟来转换我的所有脚本

      希望对你有帮助

      【讨论】:

      • 我试过了,到目前为止看起来很棒,知道如何制作按钮来调用 UPDATE users SET profile = NULL WHERE user_id = $user_id
      • 我把它们按以下顺序排列:1.function deleteimage 2.if(isset($_POST['submit'])) 和 3.表格。现在的问题是我收到消息未定义变量:user_id。我使用的顺序有问题吗?
      • 你不应该再在 PHP 中使用 mysql_ 函数了。恐怕这不是最好的建议......
      • 我同意,但是,根据脚本开发的阶段,可能更容易(而且我正在)让 mysql 正常工作,因为这是我所知道的,然后按照这里的建议迁移到 mysqli stackoverflow.com/questions/4598854/…
      • @Stefanos $user_id 是一个占位符,您必须先为其分配一个值才能使用。使用 PHP 会话或 post 或 get 变量来获取要从中删除配置文件 URL 的 user_id
      猜你喜欢
      • 1970-01-01
      • 2021-12-10
      • 2016-01-03
      • 2023-03-24
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      相关资源
      最近更新 更多