【问题标题】:(PHP/MySQL) How can I set a new address as the "new" default and unset the previous one?(PHP/MySQL)如何将新地址设置为“新”默认值并取消设置前一个地址?
【发布时间】:2018-10-04 07:07:36
【问题描述】:

我可以通过 SQL UPDATE 语句将地址设置为默认地址,但我无法让它出现在显示用户默认地址的页面上,因为之前的地址没有取消。

在我的数据库中,我有一个名为“default_flag”的表,1 = 默认,0 = 非默认,如何将 1 恢复为 0?

address_type_id 用于分类运输和计费,1 = 运输和 2 = 计费

我应该在我的控制器中添加什么?

<?php
session_start();
require_once 'connect.php';

$id = $_GET['id'];
$sql = "UPDATE address
        SET address_type_id = 1,
            default_flag = 1
        WHERE id = '$id'";

mysqli_query($conn, $sql);
header("Location: ../views/user_profile.php");

【问题讨论】:

  • if($id = 0){ $sql="UPDATE address SET address_type_id = 1, default_flag = 1 WHERE id =0"}
  • 获取用户输入并将其直接放入动态 sql 语句中是不好的做法。考虑使用参数化查询,因为您当前的代码容易受到 sql 注入攻击。

标签: php mysql mariadb


【解决方案1】:

$sql= "更新地址 SET address_type_id = 1,default_flag = 1 WHERE id = $id";

请正确打印 id

【讨论】:

    【解决方案2】:

    您可以使用1 - VALUE(只要 VALUE 为 1 或 0 )来切换状态 - 如下所示:

    $id = $_GET['id'];
    $sql = "update `address` set `address_type_id` = 1, `default_flag` = 1 - `default_flag` where id = '$id'";
    

    如果该值最初为 1,则将为零,反之亦然。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 2019-08-05
      • 1970-01-01
      相关资源
      最近更新 更多