我正在构建一个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
中的值用于为列命名?
答案 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