【问题标题】:update specific field data on sql database更新sql数据库上的特定字段数据
【发布时间】:2022-02-07 17:27:35
【问题描述】:

所以我在 web ui 中有一个数据表

我一点击按钮。 “状态电子邮件”中的所有字段数据都已更改。不仅仅是我的意思选择的领域。 这是sintaks sql

if($mail->Send())
{
    $query = "UPDATE nearly_inactive SET EmailSent = 'Sudah Kirim Email' WHERE  EmailSent = 'Belum Kirim Email'";
    $update = $con->prepare($query);
    $update->execute();     
}

我怎样才能只“更新”我点击按钮的数据??

【问题讨论】:

  • 您的查询不能唯一区分其他查询。唯一的条件是 Belum Kirim Email 与其他条件匹配。您需要获取一个唯一标识符,例如数据库中的主键,并将其与复选框相关联,例如通常用作主键的 ID。然后在选中复选框后将此主键传递给 PHP。然后将其添加到您的查询中,以便您只处理与主键关联的数据库中的记录。

标签: php html mysql html-table


【解决方案1】:

获取特定字段

为了从 MYSQL 数据库中获取特定字段

Select column FROM databse WHERE x = y

例子:

SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'

问题

最好获得一个没有其他用户使用过的唯一标识符。例如 10 位数的用户 ID 代码。检查此代码是否不存在,以使其唯一。

更新:

使用UNIQUE SQL 标记轻松解决此问题。

CREATE TABLE X (
    ID INT UNIQUE 
)

例子:

SELECT id, firstname, lastname FROM MyGuests WHERE id=ryan9273__2

更新特定字段

现在我们已经解决了问题,我们可以轻松地

UPDATE x SET y=z WHERE id=b

让我们修复您的代码:

UPDATE nearly_inactive SET EmailSent = 'Sudah Kirim Email' WHERE EmailSent = 'Belum Kirim Email'

让它更有活力

UPDATE nearly_inactive SET :email = :emailaddr WHERE EmailSent = :id

最终代码:

    $query = $con->prepare("UPDATE nearly_inactive SET :email = :emailaddr WHERE EmailSent = :id");
    $query->bindParam(':email', $email, PDO::PARAM_STR);
    $query->bindParam(':emailaddr', $emailaddr, PDO::PARAM_STR);
    $query->bindParam(':id', $id, PDO::PARAM_STR);
    $update->execute(); 

安全事项

您正在使用 PDO,所以也要使用 bindParam。密码爱好者的答案不如我提供的当前密码安全!

熟能生巧

请不要马上复制我的代码。从中学习并再次编码!让它变得更好。另请查看官方 PHP 文档以获取有关这些主题的更多信息

注意安全!

问候,

瑞恩

【讨论】:

    【解决方案2】:

    您需要根据其唯一 ID 确定需要更改哪些记录。通常它是表的主键。所以,如果你的主键是enroller_id,那么把enroller_id的值传进去,放到你的sql里面。

    if($mail->Send())
    {
        //prepare your query
        $statement = $this->mysqli->prepare("UPDATE nearly_inactive SET EmailSent = 'Sudah Kirim Email' WHERE enroller_id = ?");
        
        //check for statement preparation
        if ($statement === false) {
            trigger_error($this->mysqli->error, E_USER_ERROR);
            return;
        }
    
        //bind the value
        $statement->bindParam("i", $id);
    
        //get id for the query
        $id = your_field_enroller_id;
    
        //execute the statement
        $statement->execute();  
    }
    

    其中enroller_id 是您的表主键,$id 是该字段主键的值。

    【讨论】:

    • 不要用勺子喂食。他们不会学习。不要假设他们应该使用 $_GET。 stmt 准备检查是否无用。
    猜你喜欢
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多