Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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表,我们可以从MYSQL数据库值(用户会话)中设置表名?_Php_Mysql_Phpmyadmin - Fatal编程技术网

如何使用php创建一个MYSQL表,我们可以从MYSQL数据库值(用户会话)中设置表名?

如何使用php创建一个MYSQL表,我们可以从MYSQL数据库值(用户会话)中设置表名?,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我想用php创建一个mysql表,在这个表中,我可以根据mysql数据库的特定用户的表列值设置表名。在下面的代码中,我试图通过将表名与存储名称的变量(来自数据库)相等来实现这一点,但每次我出现错误都意味着它不起作用,请帮助我 <?php session_start(); include_once 'dbconnect2.php'; if(!isset($_SESSION['user'])) { header("Location: index.php"); } $res=mysq

我想用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";
    }
}
?>

将您创建的表代码替换为以下代码,这样您就可以从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";

这听起来像是针对一个非常糟糕的数据库设计。我看不出有什么好的理由让每个用户都有一个表。如果有一百万用户了解防止SQL注入的准备语句如何使用
mysqli\u error
获取错误消息CREATE table不正确,请尝试查看以下示例:
CREATE table id='$user\u id'(
无效语法更改为
CREATE table$user\u id(