使用变量名作为列名

时间:2014-08-03 11:52:23

标签: php mysql

我正在创建一个网站,我使用用户指定的值作为我的表的列名称,它工作正常但是,当涉及到更新时,它无法在同一个进程中执行 这是我用于从用户指定值

创建列名的代码
mysqli_query($sql,"ALTER TABLE `cmpcheck` ADD `$emailID` VARCHAR( 100 ) NOT NULL ");

以下是我更新上述专栏的代码

 mysqli_query($sql,"UPDATE cmpcheck SET `$emailID` = `".$q."` LIMIT 1  ");

任何帮助?

3 个答案:

答案 0 :(得分:1)

您使用的是错误的引号:

mysqli_query($sql,"UPDATE cmpcheck SET `$emailID` = '".$q."' LIMIT 1  ");
                                                    ^      ^

使用反引号(`),您将引用列名。

除此之外:确保正确地逃避$emailID$q

答案 1 :(得分:0)

反引号围绕表格和列名称。您应该在字符串值周围使用单引号。

mysqli_query($sql,"UPDATE cmpcheck SET `$emailID` = '$q' LIMIT 1  ");

此外,没有理由从变量替换(与$emailID一样)切换到与.串联。

使用预准备语句替换$q代替变量替换到查询中会更好。但是你不能为列名做到这一点。

答案 2 :(得分:-1)

你可以尝试:

mysqli_query($sql,"UPDATE cmpcheck SET `".$emailID."` = '".$q."' LIMIT 1 ");

还要考虑准备你的陈述。