Php Can';t让mySQL将数字作为新列输入

Php Can';t让mySQL将数字作为新列输入,php,mysql,sql,forms,Php,Mysql,Sql,Forms,我试图从表单中获取数字,使其成为mySQL数据库中的一个新列。 这是我的表格: <form action="henkehaxx.php" method="post"> Anvnamn: <input type="text" name="anvnamn"><br> Drinkid: <input type="number" name="drinkid"><br> Betyg: <input type="num

我试图从表单中获取数字,使其成为mySQL数据库中的一个新列。 这是我的表格:

<form action="henkehaxx.php" method="post">
    Anvnamn: <input type="text" name="anvnamn"><br>
    Drinkid: <input type="number" name="drinkid"><br>
    Betyg: <input type="number" name="betyg">
    <input type="submit">
</form>
但是我想让drinkid(来自表单)成为一个新的专栏,因此我希望类似的东西能够起作用:

mysql_query("ALTER IGNORE TABLE drinkbetyg ADD $_POST[drinkid] INT")
但事实并非如此

我尝试了许多变体,如INT、TINYINT、INT(20)、VARCHAR(20)以及将html表单中的值类型更改为文本,但只要drinkid只包含数字,问题似乎就一直存在

为什么不起作用? 我能做些什么使它工作


谢谢

看起来您正试图添加一个名为
INT
的列,如下所示:

ALTER IGNORE TABLE drinkbetyg ADD 15 INT;
ALTER IGNORE TABLE drinkbetyg ADD `$_POST[drinkid]` INT
这是行不通的,因为MySQL中的标识符不允许使用裸数字标识符。对我来说,这看起来非常非常奇怪,可能不是你想要做的

但是,如果这是您想要做的,则首先在数字周围加上反勾:

ALTER IGNORE TABLE drinkbetyg ADD `15` INT;
…在PHP中,它如下所示:

ALTER IGNORE TABLE drinkbetyg ADD 15 INT;
ALTER IGNORE TABLE drinkbetyg ADD `$_POST[drinkid]` INT

如果这确实是您想要做的,那么很可能是您以错误的方式解决了问题,因为这是一种非常不寻常的做法,而且可能是非常糟糕的做法。

看起来您正在尝试添加一个名为
INT
的列,类似这样:

ALTER IGNORE TABLE drinkbetyg ADD 15 INT;
ALTER IGNORE TABLE drinkbetyg ADD `$_POST[drinkid]` INT
这是行不通的,因为MySQL中的标识符不允许使用裸数字标识符。对我来说,这看起来非常非常奇怪,可能不是你想要做的

但是,如果这是您想要做的,则首先在数字周围加上反勾:

ALTER IGNORE TABLE drinkbetyg ADD `15` INT;
…在PHP中,它如下所示:

ALTER IGNORE TABLE drinkbetyg ADD 15 INT;
ALTER IGNORE TABLE drinkbetyg ADD `$_POST[drinkid]` INT

如果这确实是您想要做的,那么很可能是您以错误的方式解决了问题,因为这是一种非常不寻常的做法,而且可能是非常糟糕的做法。

看起来您正在尝试添加一个名为
INT
的列,类似这样:

ALTER IGNORE TABLE drinkbetyg ADD 15 INT;
ALTER IGNORE TABLE drinkbetyg ADD `$_POST[drinkid]` INT
这是行不通的,因为MySQL中的标识符不允许使用裸数字标识符。对我来说,这看起来非常非常奇怪,可能不是你想要做的

但是,如果这是您想要做的,则首先在数字周围加上反勾:

ALTER IGNORE TABLE drinkbetyg ADD `15` INT;
…在PHP中,它如下所示:

ALTER IGNORE TABLE drinkbetyg ADD 15 INT;
ALTER IGNORE TABLE drinkbetyg ADD `$_POST[drinkid]` INT

如果这确实是您想要做的,那么很可能是您以错误的方式解决了问题,因为这是一种非常不寻常的做法,而且可能是非常糟糕的做法。

看起来您正在尝试添加一个名为
INT
的列,类似这样:

ALTER IGNORE TABLE drinkbetyg ADD 15 INT;
ALTER IGNORE TABLE drinkbetyg ADD `$_POST[drinkid]` INT
这是行不通的,因为MySQL中的标识符不允许使用裸数字标识符。对我来说,这看起来非常非常奇怪,可能不是你想要做的

但是,如果这是您想要做的,则首先在数字周围加上反勾:

ALTER IGNORE TABLE drinkbetyg ADD `15` INT;
…在PHP中,它如下所示:

ALTER IGNORE TABLE drinkbetyg ADD 15 INT;
ALTER IGNORE TABLE drinkbetyg ADD `$_POST[drinkid]` INT


如果这真的是您想要做的,那么很可能是您以错误的方式解决了问题,因为这是一种非常不寻常的做法,可能是非常糟糕的做法。

动态添加带有数字名称的列是一种良好的RDBMS做法,没有任何使用案例。您很容易受到攻击。享受您的服务器pwn3d。。。尤其是因为您必须在mysql用户拥有ALTER权限的情况下运行,这对于面向web的代码来说通常是一件坏事。没有一种使用案例表明动态添加带有数字名称的列是一种良好的RDBMS实践。您很容易受到攻击。享受您的服务器pwn3d。。。尤其是因为您必须在mysql用户拥有ALTER权限的情况下运行,这对于面向web的代码来说通常是一件坏事。没有一种使用案例表明动态添加带有数字名称的列是一种良好的RDBMS实践。您很容易受到攻击。享受您的服务器pwn3d。。。尤其是因为您必须在mysql用户拥有ALTER权限的情况下运行,这对于面向web的代码来说通常是一件坏事。没有一种使用案例表明动态添加带有数字名称的列是一种良好的RDBMS实践。您很容易受到攻击。享受您的服务器pwn3d。。。特别是因为你必须在mysql用户拥有ALTER权限的情况下运行,这对于面向web的代码来说通常是一件坏事。让我在回答中强调这一点。谢谢。这很有效,所以我很高兴(现在)。也许你可以给我一个提示,说明为什么这可能会适得其反?我猜每个饮料ID的表中都有一列。其中的一个问题是,你无法提前预测表在任何时候会有多少列,这将妨碍你备份、任何数量的查询或修改,而且通常不是关系数据库的工作方式。相反,创建一个饮料表和另一个评级表(链接到饮料ID),并使用关系连接两个不同的概念“饮料”和“评级”。另外,请参阅,以了解有关打破独立概念的讨论。好的,我将研究这一切的含义。谢谢你的提醒!我不反对。让我在回答中强调这一点。谢谢。这很有效,所以我很高兴(现在)。也许你可以给我一个提示,说明为什么这可能会适得其反?我猜每个饮料ID的表中都有一列。其中的一个问题是,你无法提前预测表在任何时候会有多少列,这将妨碍你备份、任何数量的查询或修改,而且通常不是关系数据库的工作方式。相反,创建一个饮料表和另一个评级表(链接到饮料ID),并使用关系连接两个不同的概念“饮料”和“评级”。另外,请参阅,以了解有关打破独立概念的讨论。好的,我将研究这一切的含义。谢谢你的提醒!我不反对。让我在回答中强调这一点。谢谢。这很好用,所以我很高兴(因为没有