0

アップデート:

これについてのあなたの助けに感謝します。私は別の方針をとり、1 つのテーブルのみを使用することにしました。


3 つのテーブルで構成されるデータベースをセットアップしています。3 つの短いフォームがあり、同じ add_player.php を使用してフォーム データをデータベースに書き込みたいと考えています。

送信されるフォームに応じて (フォームごとに form_id を定義する隠しフィールドがあります)、データは ff_offense、ff_kicker、ff_defense の 3 つのテーブルのいずれかに書き込まれます。

予期しない } エラーが発生します。構文が正しくないことはわかっていますが、原因を特定できるほど PHP に精通していません。add_player.php のコードは次のとおりです。

<?php
$con = mysql_connect("localhost","dariia","celtic03");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("football", $con);

if($form_id ="offense") {$query="INSERT INTO ff_offense (ID, PLAYER, POSITION, TEAM, PASS_YDS, RUSH_YDS, REC_YDS, RECEPTIONS, TD) 
    VALUES ('NULL','$_POST[PLAYER]','$_POST[POSITION]','$_POST[TEAM]','$_POST[PASS_YDS]','$_POST[RUSH_YDS]','$_POST[REC_YDS]','$_POST[RECEPTIONS]','$_POST[TD]')"}

    elseif($form_id="kicker") {$query="INSERT INTO ff_kicker {K_ID, K_PLAYER, K_TEAM, K_EXTRA_PTS, K_FG)
        VALUES ('NULL','$_POST[K_PLAYER]','$_POST[K_TEAM]','$_POST[K_EXTRA_PTS]','$_POST[K_FG]')"}

    elseif($form_id="defense")  { $query= "INSERT INTO ff_defense {D_ID, D_TEAM, D_SACKS, D_INT, D_TD}
        VALUES ('NULL','$_POST[D_TEAM]','$_POST[D_SACKS]','$_POST[D_INT]','$_POST[D_TD]')"} ;

$db->setQuery($query);
$db->query();   

if (!mysql_query($query,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con);
?>

エラーは 11 行目であり、これは の VALUES 行になりif($form_id="offense")ます。

4

6 に答える 6

5

アップデート

クエリで括弧の代わりに中括弧を使用しています。

 $query="INSERT INTO ff_kicker {K_ID, K_PLAYER, K_TEAM, K_EXTRA_PTS, K_FG)

する必要があります

 $query="INSERT INTO ff_kicker (K_ID, K_PLAYER, K_TEAM, K_EXTRA_PTS, K_FG)

複数回行ったので、このエラーについてすべてのクエリを確認してください。

古い答え

代入演算子の代わりに比較演算子 (==または)を使用する必要があります。===

if($form_id="offense")

する必要があります

if($form_id==="offense")

2 つの注意点:

  1. あなたはSQLインジェクションに対して広くオープンです
  2. mysql_* は廃止される予定です。mysqli_*またはPDOに切り替える必要があります。
于 2012-05-17T15:42:26.020 に答える
4
if($form_id="offense").

する必要があります

 if($form_id=="offense")

また、SQL インジェクションに対して広くオープンになっているため、入力をサニタイズするようにしてください。入力をサニタイズしたとしても、より安全な PDO の使用を開始することをお勧めします。

于 2012-05-17T15:42:36.817 に答える
2

変数が値と等しいかどうかをテストする場合は、比較演算子を使用する必要があります。==

ここでは、代入演算子を使用しています。これは=、右側に記述した値を取り、左側に記述した変数の中に入れます。


基本的に、3 つの条件を更新する必要があるため、次のようになります。

if($form_id == "offense")
elseif($form_id == "kicker")
elseif($form_id == "defense")
于 2012-05-17T15:43:35.720 に答える
2

代入演算子は=

チェック状態は==

データ型もチェックしたい場合は、===

あなたの状態に問題があるので、それは以下のようになるはずです

if(variable == 'string'){
    // logic
}
于 2012-05-17T15:48:21.870 に答える
2

文字列の後にセミコロンがいくつか欠けているようです。

if($form_id == "offense") {
    $query="INSERT INTO ff_offense (ID, PLAYER, POSITION, TEAM, PASS_YDS, RUSH_YDS, REC_YDS, RECEPTIONS, TD) 
    VALUES ('NULL','$_POST[PLAYER]','$_POST[POSITION]','$_POST[TEAM]','$_POST[PASS_YDS]','$_POST[RUSH_YDS]','$_POST[REC_YDS]','$_POST[RECEPTIONS]','$_POST[TD]')";
} elseif($form_id=="kicker") {
    $query="INSERT INTO ff_kicker {K_ID, K_PLAYER, K_TEAM, K_EXTRA_PTS, K_FG)
        VALUES ('NULL','$_POST[K_PLAYER]','$_POST[K_TEAM]','$_POST[K_EXTRA_PTS]','$_POST[K_FG]')";
} elseif($form_id=="defense")  { 
    $query= "INSERT INTO ff_defense {D_ID, D_TEAM, D_SACKS, D_INT, D_TD}
        VALUES ('NULL','$_POST[D_TEAM]','$_POST[D_SACKS]','$_POST[D_INT]','$_POST[D_TD]')";
} 
于 2012-05-17T15:45:01.203 に答える
1

これらの他の答えは正しいですが、この宣言の最後にもセミコロンがありません。これが構文エラーの原因です。

if($form_id ="offense") { $query="INSERT INTO ff_offense (ID, PLAYER, POSITION, TEAM, PASS_YDS, RUSH_YDS, REC_YDS, RECEPTIONS, TD) 
    VALUES ('NULL','$_POST[PLAYER]','$_POST[POSITION]','$_POST[TEAM]','$_POST[PASS_YDS]','$_POST[RUSH_YDS]','$_POST[REC_YDS]','$_POST[RECEPTIONS]','$_POST[TD]')"; }

編集:明確にするために、セミコロンだけでなく、すべての宣言にセミコロンがありません。

于 2012-05-17T15:44:24.790 に答える