Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php POST变量命名mysql表列_Php_Mysql - Fatal编程技术网

使用php POST变量命名mysql表列

使用php POST变量命名mysql表列,php,mysql,Php,Mysql,我正在构建一个web应用程序,其中用户填写一个html表单,捕获的信息用于创建一个包含相应列的表。但是,mysql返回一个错误,其中使用POST变量命名列。以下是代码示例: $questionnaire = mysql_real_escape_string(htmlentities($_POST['questionnaire'])); $question = mysql_real_escape_string(htmlentities($_POST['question'])); $answer1

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

使用
倒勾
而不是
单引号
,因为列名是标识符

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

    • 不要把它放在括号里(
      )。如果转义列名,则需要使用反勾号


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

      将此
      自动增量更改为
      自动增量


      我尝试了反勾号,但它给了我一个新的错误:列名不正确“在变量上传递的值是什么?一个人的名字。”。这是一份调查问卷,答案用于命名列。列数是固定的,但名称因表格而异。这是一份调查问卷,所以我想为每个问题及其答案分配一张表格。