Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 MySQL创建表_Php_Mysql_Pdo_Create Table - Fatal编程技术网

PHP 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

我正在尝试使用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` 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。。。你正走向一片失败的土地……“但我没有时间做这个项目了,这似乎是最简单的版本。”你知道什么是
技术债务吗。读了这篇文章,你就会明白这不是最简单的方法。