質問

私は、次のエラーを取得していますし、私はそれを見て時間を費やしていると理由を把握することはできません!

ERROR:あなたはあなたのSQL構文でエラーが発生しています。 「主=」doej2' 近くで使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください、二= 『1』 WHERE ID = 『2』」1行目に

ここに私のコードは次のとおりです。

<?php
if (isset($_POST[Edit])){

$id = $_POST['id'];
$primary = $_POST['primary'];
$secondary = $_POST['secondary'];

$query = mysql_query("UPDATE eventcal SET primary='$primary', secondary='$secondary' WHERE id='$id'");

if (!$query) {
  $_SESSION['alert'] = 'ERROR: ' . mysql_error();
}

}?>

そして、ここでeventcalテーブルのための私のテーブル構造ます:

 CREATE TABLE `eventcal` (
 `id` int(10) unsigned NOT NULL auto_increment,
 `region` tinyint(3) unsigned NOT NULL,
 `primary` varchar(25) NOT NULL,
 `secondary` tinyint(1) NOT NULL,
 `eventDate` date NOT NULL,
 PRIMARY KEY  (`id`),
 KEY `primary_2` (`primary`),
 KEY `secondary` (`secondary`),
 CONSTRAINT `eventcal_ibfk_1` FOREIGN KEY (`primary`) REFERENCES `users` (`username`) ON UPDATE CASCADE
 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

誰もが私が欠けているものを見ることができますか?ありがとう!

役に立ちましたか?

解決

「主は、」MySQLでの予約語です。あなたは、それはそれを正しく使用するために周りティック(だけでなく、他のフィールドを置くことができます:

$query = mysql_query("UPDATE `eventcal` SET `primary`='$primary', `secondary`='$secondary' WHERE `id`='$id'");

他のヒント

「主は、」MySQLの予約語です。ドキュメントから:

あなたがそれらを引用する場合は、セクション8.2で説明したように、

予約語は識別子として許可されている、「<のhref = 『http://dev.mysql.com/doc/refman/5.0/en/identifiers.html』のrel =」 noreferrer nofollowを ">スキーマ・オブジェクト名を」。

の SQL注入孔よりも

さらに悪いです>

これを変更します:

ここに画像の説明を入力します をコーディングホラー

$id = $_POST['id'];
$primary = $_POST['primary'];
$secondary = $_POST['secondary'];

このコードに

$id = mysql_real_escape_string($_POST['id']);
$primary = mysql_real_escape_string($_POST['primary']);
$secondary = mysql_real_escape_string($_POST['secondary']);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top