0

ページ上のフォームからデータを渡し、PHP を使用してサーバー上の学生テーブルを更新することになっている Web サイトに取り組んでいます。私が今取り組もうとしている条件は、データの変更であるため、サーバー上のデータを更新できるはずですが、そうではありません...

皆さんが提供できるヘルプやアドバイスは大歓迎です。前もって感謝します。

これが私のコードです:

<?php

date_default_timezone_set('America/New_York');

$connection = mysql_connect("hostaddress","DBname","password");

            // Check connection
if (!$connection)
{
            echo "Connection failed: " . mysql_connect_error();
}
            else
{
                //select table
                mysql_select_db("DBname");
                echo "Database Found! <br>";

                $query = "UPDATE students
                          SET firstName = $_POST[firstName],
                              lastName = $_POST[lastName]
                          WHERE StudentID = $_POST[StudentID]";

                $res = mysql_query($query);

                if ($res)
                {
                   echo "<p>Record Updated<p>";
                }   
                else
                {
                   echo "Problem updating record. MySQL Error: " . mysql_error();
                }
            }

            mysql_close($connection);
        ?>

このエラーが発生し続けます:

データベースが見つかりました! レコードの更新中に問題が発生しました。MySQL エラー: SQL 構文にエラーがあります。2 行目の「lastName = , WHERE Stud」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

PS: 私はすでにいくつかのデータで作成された学生テーブルを持っています。ターミナルと上記のような同一のmysqlクエリを使用して、テーブルにアクセスして変更できますが、それでもうまくいきません。また、コード内のホスト アドレス、データベース名、およびパスワードを意図的に変更しました (誰かが尋ねた場合に備えて)。

の出力echo $query

UPDATE fall14_bmora013.students SET firstName = , lastName = 
WHERE StudentID = 890
4

3 に答える 3

1

明らかに、以下に示すように、ステートメントに構文エラー (余分な,before WHERE) があります。UPDATE

UPDATE students SET firstName = $_POST[firstName],
lastName = $_POST[lastName], <-- remove this extra comma
WHERE StudentID = $_POST[StudentID] 

編集:

フォーム要素が実際に and と名付けられているかどうかを確認してfirstNameくださいlastName。スペルをチェックします。名前がコードで参照しているものと異なるとは思えません。

于 2014-11-01T01:04:16.930 に答える
1

自分で書きました: MySQL エラー: SQL 構文にエラーがあります。2 行目の「lastName = , WHERE Stud」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

クエリ文字列を出力します。期待したものではありません。

Ps sql-injectiion を避けるために、おそらく入力をエスケープする必要があります。

また、mysql_ 関数はもう使用しないでください。次のページの警告をお読みください: http://php.net/manual/en/function.mysql-query.php

于 2014-11-01T01:07:15.220 に答える
0

これを一度試してみてください...

$query = "学生を更新 SET firstName='".$_POST['firstName']."', lastName='".$_POST['lastName']."' WHERE StudentID= '".$_POST['StudentID']." '";

于 2014-11-01T05:03:25.767 に答える