【问题标题】:i want to create table with php variable + name我想用 php 变量 + 名称创建表
【发布时间】:2017-08-19 04:49:38
【问题描述】:

我想用 php 变量+名称创建表 喜欢。

这是我的代码

   if($conn->query($sql1)===TRUE){ 
 $_SESSION['username'] = $x;
 $sql = "CREATE TABLE $x
 (
ID int NOT NULL AUTO_INCREMENT,
image blob,
date datetime,
status longtext,
PRIMARY KEY (ID)
)";

 $sql2 = "CREATE TABLE ".$x."_frnd
 (
ID int NOT NULL AUTO_INCREMENT,
myfrndname varchar(255),
myfrndusername varchar(255),
PRIMARY KEY (ID)
 )";
  $result= mysqli_query($conn,$sql,$sql2);

  if ($conn->query($result) === TRUE) {

    }

这里 ($x) 是一个变量,而 frnd 是手动名称- 我想要这样的结果表。 [管理员]。 请给我建议。

【问题讨论】:

  • 旁注:为每个用户创建一个全新的表是一种设计模式,在接下来的几年里会让你头疼不已(相信我!)。我强烈建议您维护 一个 表并添加一些 user_id 列。
  • 顺便说一句,这个问题与 PhpMyAdmin 有什么关系吗?您正在为此应用程序创建插件吗?

标签: php mysql mysqli phpmyadmin


【解决方案1】:

在您的示例中,$x 应该是字符串。

您的代码将如下所示:

$x="admin";
    $sql = "CREATE TABLE ".$x."_frnd
    ( ID int NOT NULL AUTO_INCREMENT,
      myfrndname varchar(255), 
     myfrndlastname varchar(255), 
     myfrndusername varchar(255), 
     PRIMARY KEY (ID) )";
    $result= mysqli_query($conn,$sql);  
    if ($conn->query($result) === TRUE) {
    }

注意:在表名中使用.(dot) 永远不是好习惯,而是使用_(下划线)

【讨论】:

  • 其实我想一次执行2个查询..我想在一个sql查询中创建2个表..我已经更新了我的代码..请再检查一次
  • @kartik 使用 User 表来跟踪用户。不要为每个用户创建新表。这会让你陷入非常糟糕的做法。
  • 因为我想为每个用户保留数据,这就是为什么我要为所有用户创建新表............a
  • 先生,这个不会生效
【解决方案2】:

你要做的就是添加这样的文本:

$sql = "CREATE TABLE " . $x . "frnd
( ID int NOT NULL AUTO_INCREMENT,
  myfrndname varchar(255), 
 myfrndlastname varchar(255), 
 myfrndusername varchar(255), 
 PRIMARY KEY (ID) )";

【讨论】:

  • 其实我想一次执行2个查询..我想在一个sql查询中创建2个表..我已经更新了我的代码..请再检查一次
  • 这很简单,将第二个表格代码附加在第一个表格的末尾,如下所示:$sql = "CREATE TABLE " . $x . "frnd ( ID int NOT NULL AUTO_INCREMENT, myfrndname varchar(255), myfrndlastname varchar(255), myfrndusername varchar(255), PRIMARY KEY (ID) ); CREATE TABLE " . $x . "_perms ( blah blah blah);";
【解决方案3】:

试试这样的:

CREATE TABLE IF NOT EXISTS `{$x}frnd` (
  `id` mediumint(6) unsigned zerofill NOT NULL auto_increment,
  `myfrndname` varchar(255) NOT NULL,
  `myfrndlastname` varchar(255) NOT NULL,
  `myfrndusername` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin

顺便说一句

为什么要为每个管理员制作自己的表格?

【讨论】:

  • 其实我想一次执行2个查询..我想在一个sql查询中创建2个表..我已经更新了我的代码..请再检查一次
猜你喜欢
  • 2015-06-20
  • 2020-08-20
  • 1970-01-01
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
相关资源
最近更新 更多