如何使用 $stmt = $connect->prepare 为当前会话用户插入值

Posted

技术标签:

【中文标题】如何使用 $stmt = $connect->prepare 为当前会话用户插入值【英文标题】:How to insert values for the current session user using $stmt = $connect->prepare 【发布时间】:2021-12-27 12:24:11 【问题描述】:

这是我当前的代码,用于将一些附加信息添加到名为klantinfo 的数据库表中。此信息在用户登录后添加。在登录时,给定的用户名被插入到login 表中,但也插入到klantinfo 表中。这样我可以将数据库中的用户名与会话中的用户名进行比较,这样我就可以为登录用户显示正确的数据。

if (!$error) 
    
    
    $stmt = $connect->prepare("
        INSERT INTO klantinfo (voornaam, achternaam, telefoonnummer, straat, straatnummer, stad, postcode) 
        VALUES(?, ?, ?, ?, ?, ?, ?)");
    
    $stmt->bind_param("sssssss", $voornaam, $achternaam, $telnr, $straat, $straatnummer, $stad, $postcode);
    
    if($stmt->execute()) 
        
        $success_message = "De registratie is gelukt. U kunt nu inloggen.";
        
     else 
        
        $error_message = "Error. Probeer het later opnieuw.";
        
    

但是,这只是将值插入到数据库表的新行中。我希望它专门将值插入到当前会话中的用户已经存在的行(其中已经有用户名的行)中。

我已经尝试过其他查询,但没有成功。

例如,我尝试将其添加到查询中:

WHERE username_info='$user'

没有任何效果!

【问题讨论】:

请参阅介绍性 SQL 教程。如果要更改现有行,只需使用 UPDATE 查询,而不是 INSERT 已经试过了。也没有用。 具体是怎么工作的?展示您的尝试并解释您遇到的错误或问题。如果您想更改一行,您肯定需要UPDATE。如果您在编写 UPDATE 声明时犯了错误,那是另一个问题,要解决它,我们需要查看详细信息。 【参考方案1】:

您应该使用UPDATE 语句而不是INSERT 语句。 UPDATE 更改数据库中的值而不插入新行,而INSERT 将另一行添加到数据库中。你可以参考这里: UPDATE(docs)

INSERT(docs)

INSERT

UPDATE

【讨论】:

谢谢!现在我只是不知道如何使用 $stmt = $connect -> prepare 和 $stmt->bind_param 这是一个例子:link 谢谢!这帮助我解决了它。我以一种非常低效的方式解决了它,但它确实有效。

以上是关于如何使用 $stmt = $connect->prepare 为当前会话用户插入值的主要内容,如果未能解决你的问题,请参考以下文章

java中 String strurl; Connection conn; Statement stmt; ResultSet rs;是啥意思

使用 mysqli_stmt 时 PhP 可捕获的致命错误

如何在 PHP 8 中修复这个动态 SQL 查询功能?

运行代码时如何将准备好的stmt的时间戳添加到mysql数据库? [复制]

如何让 PHP 回显 XML 标签?

如何将 $stmt 合并到我的搜索中?