0

我无法使用 PHP 变量创建 SQL 表。

假设 $tbl_date = "data";

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

它不会创建表。

4

5 回答 5

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 查询表名和列名的一部分的反引号

于 2012-04-16T12:38:34.230 回答
1

这是我的工作:

$cars = "CREATE TABLE $tbl_date (
Test varchar(15), 
Yes varchar(15), 
Very int
)";
$results = mysql_query($cars) or die (mysql_error());
于 2013-04-10T10:37:51.647 回答
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;";
于 2012-04-16T12:41:35.380 回答
0

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

于 2012-04-16T12:37:31.830 回答
0

是的你可以。

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

正如建议的那样,您需要在表名称之前和之后使用反引号(并检查您的连接用户是否有权创建表)。

这种用法的主要问题是您容易受到 SQL 注入的影响(只要您不转义$tbl_date),因此我建议您为使用的变量添加更多控件。

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

于 2012-04-16T12:38:46.160 回答