私は1つのMySQLテーブルから出てきている一連のチェックボックスがあります。私は上の各行に複数の「戦略」を記憶することができるようにしたい複数の動的に生成されたチェックボックス
<?php
$result = mysql_query("SELECT * FROM strategies");
if (!$result) {
die("Database query failed: " . mysql_error());
}
while($row = mysql_fetch_array($result)) {
$strategylist = $row['name'];
$strategyname = htmlspecialchars($row['name']);
echo '<input type="checkbox" name="strategy[]" value="' . $strategylist . '" />' . $strategyname;
}
?>
を"study"テーブルで、私は研究のIDと戦略の名前を格納する別のテーブル(sslink)を採用しています。これは、「戦略」がますます増えていくため、データベースに格納する必要があるためです。これは私が現在使用しているコードです:
<?php
if(isset($_POST['update1']))
{
$strategy=serialize($_POST['strategy']); //line 66, where the warning is happening
if(!get_magic_quotes_gpc())
{
$strategy = addslashes($strategy);
}
// update the article in the database
$query ="INSERT INTO sslink('study_id', 'strategyname') VALUES ('".$_GET['id']. "', '" .$strategy. "')";
mysql_query($query) or die('Error : ' . mysql_error());
$cacheDir = dirname(__FILE__) . '/cache/';
$cacheFile = $cacheDir . '_' . $_GET['id'] . '.html';
@unlink($cacheFile);
@unlink($cacheDir . 'index.html');
echo "<b>Article '$title' updated</b>";
$strategy = stripslashes($strategy);
}
?>
をそして、これは返されるエラーです:
お知らせ:未定義のインデックス:行66 エラーに/casestudyform.phpでの戦略:あなたが持っていますSQL構文のエラー。 'study_id'、 'strategyname'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを参照してください)VALUES( '1'、 'N;') '1'行
これを修正しますか?またはそれを行うためのより良い方法は?
ありがとうございます!
SQLで使用する前に$ _GET要求パラメータをエスケープすることを忘れないでください! –
私はあまりにも言及について考えたが、私は答えに固執すると思った:) –