我有一个名为' users'包含'用户名'和' team_name'列。 我创建了一个表单,根据'用户名'填充两个选择的下拉列表。来自用户表和' team_name'来自'团队'表
我现在正在尝试创建一个带有' team_name'的插入语句。和'用户名'选择并输入' team_name'进入'用户'表格'用户名'等于下拉列表提供的一个。
$result = $conn->prepare("INSERT INTO users (`team_name`) VALUES ('{$teamname}') WHERE username = $username");
我收到语法错误SQLState [420000] - 我认为这是因为我没有在语句中的任何其他位置声明用户名即列 - 但是,我不想给它一个值 - 我只是想让它发布team_name到提供的特定用户名。
解决这个问题的最佳方法是什么?
更新:
即使使用
UPDATE users SET team_name=$teamname WHERE username=$username
我仍然收到错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'grillzeE' in 'where clause
当用户名列中存在用户名时。
答案 0 :(得分:0)
我认为这是您正在寻找的查询:
INSERT INTO users (team_name)
SELECT team_name
FROM teams
WHERE username = ?
答案 1 :(得分:0)
如果这是PDO,那么通过在查询中实际指定变量值而不是作为绑定变量,您将失去预准备语句的好处。通常,您应该使用占位符作为变量,然后在运行时替换它们。
$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();
}