1

php.net を含むさまざまなサイトを調べましたが、挿入スクリプトが機能しない理由がまだわかりません。PHP でプログラミングするために Eclipse を使用しています。正しく動作するように PHP アドオンをインストールしていますが、スクリプトの何が問題なのかわかりません。

元。

switch($type) {

    case(1):
        require("opendb.php");
        $query = "INSERT INTO ability(AbilityName,Description,Strength,Defense,Luck,Agility) values ('" . $name . '","' . $description . '","' . $strength . '","' . $defense . '","' . $luck . '","' . $agility . "')";
        if (!mysql_query($query)) {
            echo "Ability was not entered successfully: " . mysql_error();
        } else {
            echo "Ability was entered successfully!";
        }
        break;
    case(2):
        require("opendb.php");
        $query = "INSERT INTO weapon(WeaponName,Description,Strength,Defense,Luck,Agility) values ('"  . $name . '","' . $description . '","' . $strength . '","' . $defense . '","' . $luck . '","' . $agility . "')";
        if (!mysql_query($query)) {
            echo "Weapon was not entered successfully: " . nysql_error();
        } else {
            echo "Weapon was entered successfully!";
        }
        break;
    default:
        require("opendb.php");
        $query = "INSERT INTO item(ItemName,Description,Strength,Defense,Luck,Agility) values ('" . $name . '","' . $description . '","' . $strength . '","' . $defense . '","' . $luck . '","' . $agility . "')";
        if (!mysql_query($query)) {
            echo "Item was not entered successfully: " . mysql_error();
        } else {
            echo "Item was entered successfully!";
        }
    }
}

アイテム、武器、または能力のいずれかとしてオブジェクトを挿入するラジオ ボタンを選択できると思われますが、列の値が行の値のカウント エラーと一致しません。これが私が作成した3つのテーブルです。ID は、オブジェクトが入力されるたびに自動的に増加します。null ではありませんが、オブジェクトの入力に使用しているフォームに ID を含める必要はありません。

アイテムテーブル:

ItemID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ItemName varchar(40),
Description longtext,
Strength INT NOT NULL,
Defense INT NOT NULL,
Luck INT NOT NULL,
Agility INT NOT NULL

武器表:

WeaponID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
WeaponName varchar(40),
Description longtext,
Strength INT NOT NULL,
Defense INT NOT NULL,
Luck INT NOT NULL,
Agility INT NOT NULL

能力表:

AbilityID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
AbilityName varchar(40),
Description longtext,
Strength INT NOT NULL,
Defense INT NOT NULL,
Luck INT NOT NULL,
Agility INT NOT NULL
4

1 に答える 1

1

無効な文字列引用符を使用しています。これは、SQL コマンドの単純な構文エラーです。

この行をエコーすると、

$query = "INSERT INTO ability(AbilityName,Description,Strength,Defense,Luck,Agility) values ('" . $name . '","' . $description . '","' . $strength . '","' . $defense . '","' . $luck . '","' . $agility . "')";

出力は次のようになります。

INSERT INTO ability(AbilityName,Description,Strength,Defense,Luck,Agility) values ('name","description","strength","defense","luck","agility')

ご覧のとおり、最初と最後の列で混合文字列引用符が使用されているため、エラーが発生します。SQL クエリでは一重引用符のみを使用し、HEREDOCメソッドを使用して PHP でこれらの文字列を作成することをお勧めします。

于 2012-11-26T16:06:55.227 に答える