Php 用户存储自己的数据。Mysql表名取自会话变量

Php 用户存储自己的数据。Mysql表名取自会话变量,php,mysql,session,Php,Mysql,Session,有人能帮我查一下密码吗,欢迎指路 我希望通过会话的每个用户都能创建表(每个用户都创建自己的表,其他人看不到) 您的查询字符串中有一些错误。您有一个应该删除的双引号,表名应该用“而不是”包装。因此,您的代码应该如下所示: $sql = "CREATE TABLE `{$r['username']}` ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(3

有人能帮我查一下密码吗,欢迎指路 我希望通过会话的每个用户都能创建表(每个用户都创建自己的表,其他人看不到)


您的查询字符串中有一些错误。您有一个应该删除的双引号,表名应该用“而不是”包装。因此,您的代码应该如下所示:

        $sql = "CREATE TABLE `{$r['username']}` (
            id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            firstname VARCHAR(30) NOT NULL,
            lastname VARCHAR(30) NOT NULL,
            email VARCHAR(50),
            reg_date TIMESTAMP
        )";

即使与主题无关,您也应该问问自己,是否为每个用户创建一个表是最好的解决方案。

您可以尝试修复php代码,并获得如下结果:

<?php
session_start();
if($_SESSION['user']==''){
    header("Location:login.php");
}else{
    $dbh=new PDO('mysql:dbname=something;host=127.0.0.1', 'something', 'something');
    $sql=$dbh->prepare("SELECT * FROM users WHERE id=?");
    $sql->execute(array($_SESSION['user']));
    while($r=$sql->fetch()){
        $sql = "CREATE TABLE `".$r['username']."` (
            id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            firstname VARCHAR(30) NOT NULL,
            lastname VARCHAR(30) NOT NULL,
            email VARCHAR(50),
            reg_date TIMESTAMP
        )";
        try {
            $dbh->exec($sql);
            echo " created successfully";
        } catch(PDOException $e) {
            echo $sql . "<br>" . $e->getMessage();
        }
    }

    $conn = null;
}
?>


如果您的代码是真实代码,那么您的代码中有语法错误。据我所知:/任何方向都会很好。链接或一些示例。。。。谢谢为什么每个用户创建一个表?为了“别人看不见”?如果是的话,你可以在那里看一看:代码与修复程序一起工作吗?谢谢没有代码仍然不工作。我在dreanweaver中没有发现任何语法错误。在Msql中没有插入任何内容。我尝试了代码,但仍然无法插入mysql。有可能吗?我确定答案。尝试将$conn->exec($sql)替换为$dbh->exec($sql)。因为您的pdo对象是$dbh,而不是$conn。
<?php
session_start();
if($_SESSION['user']==''){
    header("Location:login.php");
}else{
    $dbh=new PDO('mysql:dbname=something;host=127.0.0.1', 'something', 'something');
    $sql=$dbh->prepare("SELECT * FROM users WHERE id=?");
    $sql->execute(array($_SESSION['user']));
    while($r=$sql->fetch()){
        $sql = "CREATE TABLE `".$r['username']."` (
            id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            firstname VARCHAR(30) NOT NULL,
            lastname VARCHAR(30) NOT NULL,
            email VARCHAR(50),
            reg_date TIMESTAMP
        )";
        try {
            $dbh->exec($sql);
            echo " created successfully";
        } catch(PDOException $e) {
            echo $sql . "<br>" . $e->getMessage();
        }
    }

    $conn = null;
}
?>