2016-12-19 16 views
0

インデックスがMySQLアップデート行でエラーを引き起こすのはなぜですか?これを削除すると、クエリが機能します。インデックス更新の原因とエラー

エラーがある

MySQLiを照会できませんでした:UPDATEクエストは、ID = '1' セットFactionID = '2'、ReqReputation = '2'、ReqClassID = '3'、ReqClassPointsの= '2' 、経験値= '2'、GExperience = '2'、銅= '2'、銀= '2'、金= '2'、金額= '2'、説明= '2'アップグレード= '1'、1回= '1'、スロット= '2'、値= '2'、評判= '2'、クラスポイント= '2'、RewardType = 'S' id = 1 - 2016年12月20日、1:2、Field = '2'、Index = '2'、Badges = '3'、ギルド= '1'、GiveMembership = '0'、War = '1' 58 am

ここ

機能するDBase

/** MYSQL IMPROVED EXTENSION (PARENT CLASS) **/ 
public function DBase($type, $params = array()) { 
    if (!$this->SITE->CMS->Connection) 
     SystemExit('No available MySQLi connection', __LINE__, __FILE__); 

    switch (strtoupper($type)) { 
     case 'QUERY': 
      if ($Query = parent::query($params[0])) { 
       $this->SITE->CMS->TotalQuery++; 
       return $Query; 
      } else 
       SystemExit('MySQLi failed to query: ' . $params[0], __LINE__, __FILE__); 
      break; 
     case 'PREPARE': 
      if ($Query = parent::prepare($params[0])) { 
       $this->SITE->CMS->TotalQuery++; 
       return $Query; 
      } else 
       SystemExit('MySQLi failed to prepare: ' . $params[0], __LINE__, __FILE__); 
      break; 
     case 'ESCAPESTRING':     
      if ($Escape = parent::real_escape_string($params[0])) 
       return $Escape; 
      else 
       SystemExit('MySQLi failed to escape: ' . $params[0], __LINE__, __FILE__);     
      break; 
    } 
} 

あなたは、インデックスのために間違った変数を使用している表クエスト TableQuest

+0

転記テーブル構造をイメージとして停止します。むしろそれをテキストとして投稿する – Rahul

+0

[mcve]が含まれていないので、これをオフトピックとしてフラグを立てました。問題を再現するのに必要な*最短コード*にサンプルコードを減らすために質問を編集してください。 – Dezza

答えて

1

です。上で$ QIndexとして定義しますが、最後の行で$ Indexとして参照してください。以下を試してください:

  $id = $_POST["Id"]; 
      $FactionID = $_POST["Faction"]; 
      $ReqReputation = $_POST["RequiredReputation"]; 
      $ReqClassID = $_POST["Class"]; 
      $ReqClassPoints = $_POST["ReqClassRank"]; 
      $Name = $_POST["Name"]; 
      $Description = $_POST["Description"]; 
      $EndText = $_POST["EndText"]; 
      $Experience = $_POST["Experience"]; 
      $GExperience = $_POST["GuildExperience"]; 
      $Copper = $_POST["Copper"]; 
      $Silver = $_POST["Silver"]; 
      $Gold = $_POST["Gold"]; 
      $Coins = $_POST["Diamond"]; 
      $Reputation = $_POST["Reputation"]; 
      $ClassPoints = $_POST["ClassPoints"]; 
      $RewardType = $_POST["RewardType"]; 
      $Level = $_POST["Level"]; 
      $Upgrade = $_POST["Upgrade"]; 
      $Once = $_POST["Once"]; 
      $Slot = $_POST["Slot"]; 
      $Value = $_POST["Value"]; 
      $Field = $_POST["Field"]; 
      $QIndex = $_POST["Index"]; 
      $Badges = $_POST["Badges"]; 
      $Guild = $_POST["Guild"]; 
      $GiveMembership = $_POST["GiveMembership"]; 
      $War = $_POST["War"]; 

      $MYSQL_QUERY = $content->DBase('Query', array(0 => "UPDATE quests SET id = '$id', FactionID = '$FactionID', ReqReputation = '$ReqReputation', ReqClassID = '$ReqClassID', ReqClassPoints = '$ReqClassPoints', Name = '$Name', Description = '$Description', EndText = '$EndText', Experience = '$Experience', GExperience = '$GExperience', Copper = '$Copper', Silver = '$Silver', Gold = '$Gold', Coins = '$Coins', Reputation = '$Reputation', ClassPoints = '$ClassPoints', RewardType = '$RewardType', Level = '$Level', Upgrade = '$Upgrade', Once = '$Once', Slot = '$Slot', Value = '$Value', Field = '$Field', Index = '$QIndex', Badges = '$Badges', Guild = '$Guild', GiveMembership = '$GiveMembership', War = '$War' WHERE id = $id")); 

@Rahulのコメントも参照してください。あなたの: "WHERE id = '$ id'"は間違った値を渡しているようです。 IDは日付/時刻のそのバージョンではない可能性が最も高いです。現在の日付+時刻を使用したい場合は、NOW()のようなものがあります。現在の日付と時刻を秒単位で表示します。

+0

私はQIndexでQを削除してもまだ動作していません。 –

+0

クエストテーブル構造の出力を与えることはできますか?テーブルの間違った場所にインデックスを挿入しようとしている可能性があります。 –

+0

インデックスの名前をIndex2に変更すると、インデックスの名前が変更されます。なぜインデックスが原因でエラーが発生するのか? –

関連する問題