首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于其他字段的PDO insert insert insert

基于其他字段的PDO insert insert insert
EN

Stack Overflow用户
提问于 2015-10-18 22:00:04
回答 2查看 126关注 0票数 0

我有一个名为'users‘的表,其中包含'username’和'team_name‘列。我已经创建了一个表单,它根据users表中的'username‘和'teams’表中的'team_name‘填充两个选择下拉列表。

我现在正在尝试创建一个insert语句,该语句接受所选的'team_name‘和'username’,并将'team_name‘输入到'users’表中,其中'username‘等于下拉列表提供的值。

代码语言:javascript
复制
$result = $conn->prepare("INSERT INTO users (`team_name`) VALUES ('{$teamname}') WHERE username = $username");

我得到了一个语法错误SQLState420000 -我认为这是因为我没有在语句中的任何地方声明用户名,即列-但是,我不想给它赋值-我只想让它将team_name发布到提供的特定用户名。

解决这个问题的最好方法是什么?

更新:

即使在使用

代码语言:javascript
复制
UPDATE users SET team_name=$teamname WHERE username=$username 

我仍然收到错误

代码语言:javascript
复制
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'grillzeE' in 'where clause

当用户名确实存在于用户名列中时。

EN

回答 2

Stack Overflow用户

发布于 2015-10-18 22:11:58

我认为这就是您要查找的查询:

代码语言:javascript
复制
INSERT INTO users (team_name)
SELECT team_name
FROM   teams
WHERE  username = ?
票数 0
EN

Stack Overflow用户

发布于 2015-10-18 22:13:12

如果这是PDO,那么通过在查询中实际指定变量值而不是作为绑定变量,您在一定程度上失去了预准备语句的好处。通常,您应该使用占位符作为变量,然后在运行时替换。

代码语言:javascript
复制
$stmt= $conn->prepare("INSERT INTO users (`team_name`) VALUES (:teamname) WHERE username = :username");

if( isset( $username ) && isset( $teamname ) ){
    $params=array(':teamname' => $teamname, ':username' => $username );
    foreach( $params as $key => &$val ) {
        $stmt->bindParam( $key, $val );
    }
    $stmt->execute();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33198786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档