MySQL not querying


MySQL not querying

记录器显示我已经连接到数据库,但我无法正确查询或添加表,因为当我加入游戏时,我会得到"主表失败"、"玩家不在数据库中"、"无法添加条目"answers"玩家不进库",所以这显然是MySQL的错误。如果有人能为我指明正确的方向,那就太好了!

<?php
namespace gladiusdata;
use pocketmine'plugin'PluginBase;
use pocketmine'level'particle'FloatingTextParticle;
use pocketmine'math'Vector3;
use pocketmine'utils'TextFormat;
use gladiusinfo'AnnounceTask;
use gladiusinfo'gladiusinfo;
use pocketmine'utils'Config;
use pocketmine'event'Listener;
use pocketmine'event'player'PlayerJoinEvent;
class Main extends PluginBase implements Listener
{
    private $db;
    public function onEnable()
    {
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
        $user = /*username*/;
        $pass = /*password*/;
        $server = /*server*/;
        $database = /*database*/;
        $port = /*port*/;
        $this->db = @mysqli_connect($server, $user, $pass, $database, $port);
        if(!$this->db)
        {
            $this->getServer()->getLogger()->info(TextFormat::RED . "Did not work");
        } else {
            $this->getServer()->getLogger()->info(TextFormat::GREEN . "Worked!");
        }
        if($this->db->query("CREATE TABLE IF NOT EXISTS master (player TEXT PRIMARY KEY COLLATE NOCASE, rank TEXT, bal INTEGER);"))
        {
            $this->getServer()->getLogger()->info(TextFormat::GREEN . "Created master table");
        } else {
            $this->getServer()->getLogger()->info(TextFormat::RED . "Master table failed");
        }
    }
    public function onPlayerJoin(PlayerJoinEvent $pje)
    {
        $this->insert($pje->getPlayer()->getName());
    }
    public function insert($player, $rank = "none", $bal = 0)
    {
        if(!$this->playerExists($player))
        {;
            $sql = "INSERT INTO master (player, rank, bal) VALUES ($player,                 $rank, $bal)";
            if($this->db->query($sql))
            {
                $this->getServer()->getLogger()->info(TextFormat::GREEN . "Added new entry successfully");
            } else {
                $this->getServer()->getLogger()->info(TextFormat::RED . "Could not add entry");
            }
        }
        $this->playerExists($player);
    }
    public function playerExists($player)
    {
        $result = $this->db->query("SELECT * FROM master WHERE player='$player'");
        if($result)
        {
            $this->getServer()->getLogger()->info(TextFormat::GREEN . "Player is in database!");
        } else {
            $this->getServer()->getLogger()->info(TextFormat::RED . "Player is not in database!");
        }
    }
}

因为TEXT列设置为主键,所以没有创建表。不能将TEXT列设置为主键。错误为

ERROR 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length

有关更多信息,请参阅链接-

MySQL错误:密钥规范没有密钥长度

MySQL错误:没有密钥长度的密钥规范