0

私は友人のために RPG タイプの戦闘システムに取り組んでおり、mysql クエリでイライラする問題に遭遇しました。また、mysql_ 関数のセマンティクスに関するレクチャーは行わないでください。

$sql = "UPDATE `user_pets` SET `curhp` = `hitpoints`, `curmp` = `misticpower`, `pet_status` = '0' WHERE `id` = '" .$arrayPet['id']. "'";
if ( mysql_query($sql) {
    echo "Success";
}

これは、アプリケーションで毎回成功として返されます。ただし、データベースでは実際には何も起きていません。クエリ自体をエコーし​​てphpmyadminで実行したところ、「修復」が適切に完了しました。ただし、このクエリの実行時に実際に何が起こっているかは、望ましいことではありません。

トラブルシューティングに関する推奨事項はありますか? または、クエリ自体に何か問題がありますか?

$arrayPet['id'] はuser_petsテーブルから取得され、有効な ID です。

4

2 に答える 2

2

最初にお勧めするのは$arrayPet['id']、一重引用符で囲まないことです...整数であると想定しています。

2 つ目は、関数 mysql_query() が正常に返された場合でも、何かが更新されたことを必ずしも意味するわけではありません。サーバー上でクエリが正常に実行されたことを意味します。あなたのクエリは、いくつかの文字列を設定し、pet_status を 0 に設定するだけのように見えます。次の情報を提供してください。

  1. user_pets からのデータ行の実際のサンプル
  2. このクエリの実行後に期待される行の外観
于 2012-07-18T20:49:30.870 に答える
0

これを試して:

$sql = "UPDATE user_pets SET curhp = 'hitpoints', curmp = 'misticpower', pet_status = '0' WHERE id = '" .$arrayPet['id']. "'";
$result = mysql_query($sql);

if ($result) {
echo "Success";

}

さらに重要なことは、$arrayPet['id']: 整数または文字列値を返すかどうかを確認することです。整数型の場合は、単一引用符で囲まないでください。次のようなことをしてください:

... WHERE id = $arrayPet['id']";
于 2012-07-18T21:03:47.010 に答える