使用php POST变量命名mysql表列

时间:2013-04-09 16:11:00

标签: php mysql

我正在构建一个Web应用程序,其中用户填写html表单,捕获的信息用于创建具有相应列的表。但是,mysql返回一个错误,其中POST变量用于命名列。以下是代码示例:

$questionnaire = mysql_real_escape_string(htmlentities($_POST['questionnaire']));
$question = mysql_real_escape_string(htmlentities($_POST['question']));
$answer1 = mysql_real_escape_string(htmlentities($_POST['answer1']));
$answer2 = mysql_real_escape_string(htmlentities($_POST['answer2']));

mysql_query = "CREATE TABLE $questionnaire
               (id int(5) NOT NULL AUTO INCREMENT,
                PRIMARY KEY(id),
                question varchar(200),
                '$answer1' varchar(200),
                '$answer2' varchar(200) )";

如何使$answer1中的值用于为列命名?

3 个答案:

答案 0 :(得分:0)

使用BACKTICK而非SINGLE QUOTES,因为列名是标识符,

mysql_query = "CREATE TABLE $questionnaire
               (id int(5) NOT NULL AUTO INCREMENT,
                PRIMARY KEY(id),
                question varchar(200),
                `$answer1` varchar(200),
                `$answer2` varchar(200) )";

答案 1 :(得分:0)

请勿将其放在括号中(')。如果您转义列名,则需要使用反引号。

但是,您应该重新考虑您的表格布局。如果你必须动态生成表格和/或列,那么你的设计肯定会出现问题。

答案 2 :(得分:0)

将此AUTO INCREMENT更改为AUTO_INCREMENT

http://www.w3schools.com/sql/sql_autoincrement.asp