PHP MySQL创建表
我正在尝试使用PHP、PDO和MySQL创建一个表。 为了满足应用程序的需要,表的名称必须是一个变量 这是我的密码:PHP MySQL创建表,php,mysql,pdo,create-table,Php,Mysql,Pdo,Create Table,我正在尝试使用PHP、PDO和MySQL创建一个表。 为了满足应用程序的需要,表的名称必须是一个变量 这是我的密码: $request = $pdo->prepare("CREATE TABLE IF NOT EXISTS :table ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `parent_id` bigint(20) unsigned NOT NULL, `position` bigin
$request = $pdo->prepare("CREATE TABLE IF NOT EXISTS :table (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` bigint(20) unsigned NOT NULL,
`position` bigint(20) unsigned NOT NULL,
`left` bigint(20) unsigned NOT NULL,
`right` bigint(20) unsigned NOT NULL,
`level` bigint(20) unsigned NOT NULL,
`title` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
`type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;");
$request->execute(array(
'table'=>$uuid));
我不能在MySQL语句中使用“:table”吗??
目前我写了:
[...]
CREATE TABLE IF NOT EXISTS `$uuid`
[...]
这是可行的,但听起来很奇怪^^这是我问题的唯一解决方案吗?您不能将表名作为参数传递。如果要使用变量名创建表,必须使用动态查询。不能将表名作为参数传递。若要创建具有变量名的表,必须使用动态查询
$pdo->query("CREATE TABLE IF NOT EXISTS userfiles (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int unsigned NOT NULL,
`parent_id` bigint(20) unsigned NOT NULL,
`position` bigint(20) unsigned NOT NULL,
`left` bigint(20) unsigned NOT NULL,
`right` bigint(20) unsigned NOT NULL,
`level` bigint(20) unsigned NOT NULL,
`title` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
`type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8");
这是处理此类情况的唯一正确方法。这些都是非常基本的事情。
您当前的设置就像一辆方轮汽车。
尽管时间不多,你还是得安排一张桌子。
否则,你将浪费更多的时间,最终会转向正确的设计无论如何,但经过无数的痛苦 这是处理此类情况的唯一正确方法。
这些都是非常基本的事情。
您当前的设置就像一辆方轮汽车。
尽管时间不多,你还是得安排一张桌子。
否则,您将浪费更多的时间,最终还是会转向正确的设计,但经过无数的努力后,
var\u dump($uuid)的输出是什么代码>?当您尝试使用:table执行版本时会发生什么?@rekire$uuid包含我用来生成随机变量的uniqid(“,true)”的结果IDs@DWright带有:table的版本不起作用。它对var\u dump($uuid)的输出没有任何可能的重复(无错误)代码>?当您尝试使用:table执行版本时会发生什么?@rekire$uuid包含我用来生成随机变量的uniqid(“,true)”的结果IDs@DWright带有:table的版本不起作用。它不做任何事情(没有错误)可能重复我不明白…^^'每次有人在我的网站上注册时,我只需要创建一个表(一个新用户=一个新表)。动态查询真的是我需要的吗?你会怎么做?“一个新用户=一个新表”最糟糕的设计。包括引用用户表PK的UserId
字段。Hokobyan我知道这是一个非常糟糕的设计。但是我已经没有时间做这个项目了,这似乎是最简单的版本。我有一个包含所有用户的表,每个用户都可以在线存储文件并通过“树状视图”访问它们。因此,每个用户都有一个存储文件的表(就像我试图使用变量名创建的表)。表的名称与用户id相对应。@Eschard1991:我必须同意Hakobyan。。。你正走向一片失败的土地……“但我没有时间做这个项目了,这似乎是最简单的版本。”你知道什么是技术债务吗。读了这篇文章,你就会明白这不是最简单的方法。我不明白…^^每次有人在我的网站上注册时,我只需要创建一个表(一个新用户=一个新表)。动态查询真的是我需要的吗?你会怎么做?“一个新用户=一个新表”最糟糕的设计。包括引用用户表PK的UserId
字段。Hokobyan我知道这是一个非常糟糕的设计。但是我已经没有时间做这个项目了,这似乎是最简单的版本。我有一个包含所有用户的表,每个用户都可以在线存储文件并通过“树状视图”访问它们。因此,每个用户都有一个存储文件的表(就像我试图使用变量名创建的表)。表的名称与用户id相对应。@Eschard1991:我必须同意Hakobyan。。。你正走向一片失败的土地……“但我没有时间做这个项目了,这似乎是最简单的版本。”你知道什么是技术债务吗。读了这篇文章,你就会明白这不是最简单的方法。