表单提交时出现MySQL错误

Cyn*_*hia 0 php mysql syntax-error

更新:

非常感谢你们对此的帮助.我采取了不同的策略,决定只使用一张桌子.


我有一个由3个表组成的数据库.我有三个简短的表单,我想使用相同的add_player.php将表单数据写入数据库.

根据提交的表单(我在每个表单中都有一个隐藏字段定义form_id),数据将被写入三个表中的一个:ff_offense,ff_kicker,ff_defense.

我收到一个意想不到的错误.我知道我的语法已经关闭,但是我对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);
?>
Run Code Online (Sandbox Code Playgroud)

错误是第11行,这将是VALUES行if($form_id="offense").

Joh*_*nde 5

UPDATE

您在查询中使用花括号而不是括号.

 $query="INSERT INTO ff_kicker {K_ID, K_PLAYER, K_TEAM, K_EXTRA_PTS, K_FG)
Run Code Online (Sandbox Code Playgroud)

应该

 $query="INSERT INTO ff_kicker (K_ID, K_PLAYER, K_TEAM, K_EXTRA_PTS, K_FG)
Run Code Online (Sandbox Code Playgroud)

您已多次执行此操作,因此请检查所有查询是否存在此错误.

老答复

您应该使用比较运算符(=====)而不是赋值运算符:

if($form_id="offense")
Run Code Online (Sandbox Code Playgroud)

应该

if($form_id==="offense")
Run Code Online (Sandbox Code Playgroud)

有两点需要注意:

  1. 您对SQL注入持开放态度
  2. mysql_*将被删除.你应该切换到mysqli_*PDO.