Mysql INSERT INTO无法正常工作 - 语法正确

use*_*341 2 php mysql insert

我有这个简单的插入查询,似乎输出一个我找不到的错误,这让我疯了:(

会不会有人帮助我

错误是:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `User_Id`='16'' at line 1
Run Code Online (Sandbox Code Playgroud)

查询是:

$insert = "INSERT INTO `pf_users` (`Task4`,`Task5`,`Task6`,`Task7`) VALUES ('$task4','$task5','$task6','$task7') WHERE `User_Id`='$GetUser'";
Run Code Online (Sandbox Code Playgroud)

这是PHP代码:

if(empty($_POST) === false) {
    $task4 = sanitize($_POST['task4']);
    $task5 = sanitize($_POST['task5']);
    $task6 = sanitize($_POST['task6']);
    $task7 = sanitize($_POST['task7']);

    $GetUser = $_SESSION['User_Id'];

    //Query not inserting into database
    $insert = "INSERT INTO `pf_users` (`Task4`,`Task5`,`Task6`,`Task7`) VALUES ('$task4','$task5','$task6','$task7') WHERE `User_Id`='$GetUser'";

    echo "<pre>".$insert."</pre>";

    mysql_query($insert) or die(mysql_error()); 
}
Run Code Online (Sandbox Code Playgroud)

Sanitize函数是mysql_real_escape_string(),$task值接收表单数据.

谢谢.

Flu*_*feh 7

您不能where在插入中使用子句.

当您插入一行时,它只会添加所有内容.

如果要更新现有记录,使用该where子句标识要更新的记录.

$insert = "INSERT INTO `pf_users` (`Task4`,`Task5`,`Task6`,`Task7`) VALUES ('$task4','$task5','$task6','$task7')";
Run Code Online (Sandbox Code Playgroud)

要么

$update = "update `pf_users` set `Task4`='$task4',`Task5`='$task5', `Task6`='$task6', `Task7`='$task7' where `User_Id`='$GetUser'";
Run Code Online (Sandbox Code Playgroud)

编辑:因为我有太多的赞成这么简单的答案,我更好地更新它的触摸.mySQL中有一种语法可以让你同时进行插入和更新 - 或者更确切地说它会选择你需要做的事情.它被称为"插入...复制键",如下所示:

$insertOrUpdate="insert into pf_users (task4, task5, task6, task7) values ('$task4', '$task5', '$task6', '$task7')
    on duplicate key update task5='$task5', task6='$task6', task7='$task7'";
Run Code Online (Sandbox Code Playgroud)

要使用它,您需要定义一个键 - 这可以是主键或复合键.语法尝试插入一行,如果违反了键限制,则更新它将插入的行.在上面的示例中,我假设它task4是主键,因此它从查询的更新部分中省略.