我有一个名为'users‘的表,其中包含'username’和'team_name‘列。我已经创建了一个表单,它根据users表中的'username‘和'teams’表中的'team_name‘填充两个选择下拉列表。
我现在正在尝试创建一个insert语句,该语句接受所选的'team_name‘和'username’,并将'team_name‘输入到'users’表中,其中'username‘等于下拉列表提供的值。
$result = $conn->prepare("INSERT INTO users (`team_name`) VALUES ('{$teamname}') WHERE username = $username");我得到了一个语法错误SQLState420000 -我认为这是因为我没有在语句中的任何地方声明用户名,即列-但是,我不想给它赋值-我只想让它将team_name发布到提供的特定用户名。
解决这个问题的最好方法是什么?
更新:
即使在使用
UPDATE users SET team_name=$teamname WHERE username=$username 我仍然收到错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'grillzeE' in 'where clause当用户名确实存在于用户名列中时。
发布于 2015-10-18 22:11:58
我认为这就是您要查找的查询:
INSERT INTO users (team_name)
SELECT team_name
FROM teams
WHERE username = ?发布于 2015-10-18 22:13:12
如果这是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();
}https://stackoverflow.com/questions/33198786
复制相似问题