如何使用php创建MYSQL Tabe,我们可以在其中通过mysql数据库值(用户会话)设置表名?

时间:2018-09-21 09:44:15

标签: php mysql phpmyadmin

我想用php创建一个mysql表,在其中我可以从mysql数据库特定用户的表列值中设置表名。在下面的代码中,我试图通过将表名与一个存储名称(来自数据库)的变量等价,以实现此目的,但是每次遇到错误时,均表示它不起作用,请帮我!

   <?php
session_start();
include_once 'dbconnect2.php';

if(!isset($_SESSION['user']))
{
  header("Location: index.php");
}
$res=mysqli_query($con, "SELECT * FROM users WHERE user_id=".$_SESSION['user']);
$userRow=mysqli_fetch_assoc($res);

if($userRow['tableid']!=1)
{
    $user_id = $userRow['user_id'];

    $createtable="  CREATE TABLE `id`='$user_id' (
                        `id` int(5) NOT NULL,
                        `topic` int(5) NOT NULL,

                        `ptopic` varchar(25) NOT NULL,
                        ADD PRIMARY KEY (`id`)

                    ) ENGINE=MyISAM DEFAULT CHARSET=latin1";
    $resulttid = mysqli_query($con, $createtable);
    if($resulttid)   {
        $tablequery = "UPDATE `users` SET `tableid`='1' WHERE `user_id` = $user_id";      
        $resulttblquery = mysqli_query($con, $tablequery); 
    }else{ 
        echo "error";
    }
}
?>

1 个答案:

答案 0 :(得分:0)

用下面的代码替换创建表代码,以便可以从PHP变量创建表名,并确保未加引号的表名可以包含服务器默认字符集中的任何字母数字字符

$createtable=" CREATE TABLE $user_id(
                    `id` int(5) NOT NULL,
                    `topic` int(5) NOT NULL,
                    `ptopic` varchar(25) NOT NULL,
                    PRIMARY KEY (`id`)

                ) ENGINE=MyISAM DEFAULT CHARSET=latin1";