0

テーブルチーム(FK)から入力されているドロップダウンリストが機能しています。動作していないのは、データを一致に追加することだけです。次のエラーが発生し続けます。

- team_home not set 
- team_away not set 

- Notice: Undefined index: team_home in vvo/insertmatch.php on line 28

- Notice: Undefined index: team_away in vvo/insertmatch.php on line 28

- Error: 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 'matches (team_home, team_away) VALUES ('','')' at line 1

誰かがこれらのエラーの原因を教えてもらえますか?

以下のコードを参照してください。SQLインジェクションに対して脆弱であることはわかっていますが、これを機能させたいだけです。

**addmatch.php**

<?php
$con = mysql_connect("db.xx.nl","md190851db210288","xxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("md190851db210288", $con);

?>
<form action="insertmatch.php" method="GET">
<select name="team_home">
<?php
$sql = "SELECT team_id, team_name FROM teams ".
"ORDER BY team_name";

$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs))
{
  echo "<option value=\"".$row['team_id']."\">".$row['team_name']."</option>\n  ";
}
?>
</select>
<select name="team_away">
<?php
$sql = "SELECT team_id, team_name FROM teams ".
"ORDER BY team_name";

$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs))
{
  echo "<option value=\"".$row['team_id']."\">".$row['team_name']."</option>\n  ";
}
?>
</select>
<input type="submit" />

**insertmatch.php**

<?php
  error_reporting(E_ALL);
  ini_set("display_errors", 1);

$con = mysql_connect("db.xx.nl","md190851db210288","xxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

if (isset($_POST['team_home'])) { 
    echo $_POST['team_home']; 
} else { 
    echo 'team_home not set <br>'; 
}
if (isset($_POST['team_away'])) { 
    echo $_POST['team_away']; 
} else { 
    echo 'team_away not set <br>'; 
}  

mysql_select_db("md190851db210288", $con);

$sql="INSERT INTO matches (team_home, team_away)
VALUES
('$_POST[team_home]','$_POST[team_away]')";

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

echo $team_home;
?>
4

3 に答える 3

2

これを試して

$sql=sprintf("INSERT INTO matches (team_home, team_away)VALUES('%s','%s')",mysql_real_escape_string($_POST['team_home']),mysql_real_escape_string($_POST['team_away']));
于 2012-04-11T19:32:16.643 に答える
1

あなたのPHPは有効ではありません:

$_POST[team_home]

二重引用符内が間違っています。

{} で囲み、team_home を一重引用符で囲みます

{$_POST['team_home']}

他の分野についても同様です。そして提案として、SQLインジェクションに注意し、クエリで使用する前に $_POST からデータをサニタイズしてください

于 2012-04-11T19:33:29.243 に答える
0

ここで何をしているのかを指摘したいだけです

$sql="INSERT INTO matches (team_home, team_away)
VALUES
('$_POST[team_home]','$_POST[team_away]')";

非常に危険です。グローバル変数を直接使用しないでください。それらをフィルタリングして検証する必要があります。そうしないと、アプリケーションを SQL インジェクション攻撃にさらすことになります。

于 2012-04-11T19:33:25.437 に答える