0

うまくいけば、簡単な修正ですが、週末中ずっと私を悩ませてきました。

MYSQL データベースに接続するための簡単なスクリプトがあり、HTML フォームのフィールドを使用してデータベースに新しいレコードを入力します。

スクリプトは正常に動作していますが、スクリプトでデータベース列を定義していません。単純に挿入を使用して、値を HTLM フォーム フィールドとして参照しました。

働く

mysql_select_db("golfingdb", $con);

mysql_query("INSERT INTO Test1 
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[email]')");

mysql_close($con);

機能しない

mysql_select_db("golfingdb", $con);

mysql_query("INSERT INTO 'Test1' (First Name, Surname, Email) 
VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[email]')");

mysql_close($con);

ただし、コードでデータベース フィールド名を参照すると、新しいレコードの作成に失敗します。

フィールド名のスペル(大文字を含む)をトリプルチェックしましたが、構文エラーは発生しません。

どんな助けでも大歓迎です。

乾杯

水田

4

5 に答える 5

2

名前にスペースが含まれている場合は、列名をバッククォートで囲む必要があります。

(`First Name`,
于 2013-01-27T13:12:29.890 に答える
0

多分それは2単語の列名です。列を参照するときは、「First Name」などを使用できます。

MySQLが提供する正確なエラーを投稿できますか?

于 2013-01-27T13:13:00.590 に答える
0

``テーブル名と列名をエスケープするには、バックスティック文字を使用する必要があります。''文字列値をエスケープするには、一重引用符を使用する必要があります。

2 番目の例では、テーブル名はバックスティックではなく一重引用符でエスケープされています。さらに、フィールド名はまったくエスケープされないため、スペースを含む最初のフィールド名で問題が発生する可能性があります。

正しい形式は次のとおりです。

 mysql_query("INSERT INTO `Test1` (`First Name`, `Surname`, `Email`)
              VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[email]')");

また、 PHP のmysql_関数は非推奨になっていることに注意することも重要です。PHP で mysql_* 関数を使用すべきでない理由で説明されている代替手段の 1 つを使用することを強くお勧めします。

于 2013-01-27T13:24:10.517 に答える
0

これを試して

$firstname=$_POST["firstname"];
$lastname=$_POST["lastname"];
$email=$_POST["email"];

mysql_query("INSERT INTO Test1('First Name', 'Surname', 'Email') 
VALUES ('$firstname','$lastname','$email')");

正しいデータ型と長さでテーブル構造を作成したことを確認してください。

于 2013-01-27T13:17:37.790 に答える