使用PHP变量创建mysql表

时间:2012-04-16 12:35:16

标签: php mysql sql variables

我在使用PHP变量创建SQL表时遇到问题。

让我们说$ tbl_date =“data”;

mysql_query('CREATE TABLE '.$tbl_date.'
(
Test varchar(15),
Yes varchar(15),
Very int
)');

它不会创建表格。

5 个答案:

答案 0 :(得分:3)

看起来它不起作用,因为你的表名不在引号中。试试这个:

mysql_query('CREATE TABLE `'.$tbl_date.'`
(
`Test` varchar(15),
`Yes` varchar(15),
`Very` int
)');

同样适用于字段名称 也试试这个,人类更容易阅读:

mysql_query("CREATE TABLE `{$tbl_date}`
(
`Test` varchar(15),
`Yes` varchar(15),
`Very` int
)");

请注意不同类型的报价:
- 用于在PHP中构建一些字符串(例如,SQL查询)的单引号和双引号 - 后引号专门用作表名和列名的SQL查询的一部分

答案 1 :(得分:1)

我认为你错过了格式化(单引号或双引号等)试试这个

$sql = "CREATE TABLE `user` (`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `address` TEXT NOT NULL) ENGINE = MyISAM;";

答案 2 :(得分:1)

这是我的工作:

$cars = "CREATE TABLE $tbl_date (
Test varchar(15), 
Yes varchar(15), 
Very int
)";
$results = mysql_query($cars) or die (mysql_error());

答案 3 :(得分:0)

是的,但您必须小心,用户不会注入代码。查看mySQL注入以确保您的代码是安全的,否则用户可以创建或删除您不希望他们有权访问的表。另外,我不明白你为什么要这样做,当然最好在数据库中创建一个表,然后添加可以在之后添加的行的字段。

答案 4 :(得分:0)

是的,你可以。

mysql_query接受一个字符串,因此您基本上可以附加任何动态字符串。

根据建议,您需要在表名前后使用反引号(并检查连接的用户是否有权创建表)。

这种用法的主要问题是你很容易受到SQL注入攻击(只要你不逃避$tbl_date),所以我建议你为所用的变量添加更多的控件。

此外,将动态表添加到数据库(不包括noSQL数据库)通常是 BAD 用法(检查您是否真的需要它)。