2

私はこの単純なクエリへの挿入を持っていますが、それは私が見つけることができないエラーを出力しているようであり、それは私を狂わせています:(

誰かが私を助けてくれますか。

エラーは次のとおりです。

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

クエリは次のとおりです。

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

そしてここに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()); 
}

サニタイズ関数はmysql_real_escape_string()であり、$task値はフォームデータを受信して​​います。

ありがとう。

4

4 に答える 4

7

where挿入に句を使用することはできません。

行を挿入すると、すべてが追加されます。

既存のレコードを更新する場合は、この句を使用して、更新するレコードwhereを識別します。

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

また

$update = "update `pf_users` set `Task4`='$task4',`Task5`='$task5', `Task6`='$task6', `Task7`='$task7' where `User_Id`='$GetUser'";

編集:私はそのような単純な答えにはあまりにも多くの賛成票を持っているので、私はそれをもう少し更新したほうがいいです。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'";

これを使用するには、キーを定義する必要があります。ただし、これは主キーまたは複合キーの場合があります。構文は行を挿入しようとし、それがキーの制限に違反した場合、挿入されたはずの行を更新します。上記の例では、それが主キーであると想定しtask4たため、クエリの更新セクションから省略されました。

于 2012-08-20T09:22:58.097 に答える
1

WHERESQLステートメントで削除します。WHEREただし、INSERT...SELECTステートメントで使用できます。

多分あなたは使いたいUPDATE

UPDATE  `pf_users`
SET `Task4` = '$task4'
    `Task5`= '$task5'
    `Task6`= '$task6'
    `Task7` = '$task7'
WHERE `User_Id`='$GetUser'
于 2012-08-20T09:24:31.533 に答える
0

updateの代わりに使用する必要がありますinsert

$insert = "UPDATE `pf_users` SET `Task4`='$task4',`Task5`='$task5'.... WHERE `User_Id`='$GetUser'";
于 2012-08-20T09:24:43.820 に答える
0

挿入クエリにwhere句が含まれることはありません。使用する場合は、更新クエリを使用する必要があります。また、これを使用することができます:-

$update = "UPDATE `pf_users` (`Task4`,`Task5`,`Task6`,`Task7`) VALUES ('$task4','$task5','$task6','$task7') WHERE `User_Id`='$GetUser'";
$result = mysql_query($update);

またはあなたはそれを使うことができます。

$insert = "INSERT INTO `pf_users` SET `Task4` = '".mysql_real_escape_string($task4)."',`Task5`= '".mysql_real_escape_string($task5)."',`Task6`= '".mysql_real_escape_string($task6)."',`Task7`='".mysql_real_escape_string($task7)."'";
$result = mysql_query($insert);

必要に応じて編集できます。それがあなたを助けることを願っています。私はそれをできるだけ簡単にするようにしています。このスクリプトではセキュリティ機能が良くない可能性があります。そのためにはさらにいくつかの作業を行う必要があります。

于 2012-08-20T11:54:40.467 に答える