在SQL中自动创建表

时间:2014-01-16 14:11:29

标签: php mysql sql

我想知道是否有人可以提供帮助?

我是PHP的新手,已经开始创建一个基于会员的网站作为尝试学习一些新PHP的项目,我想知道自动创建表的正确语法是什么?

这是我当前的代码,我希望为每个用户创建一个单独的表,但是在尝试和尝试时我似乎无法让它工作!

有任何建议/更正吗?

<?php
    require("dbconnection.php");

    if(empty($_SESSION['username'])) {
        header("Location: index.php");
        die("Redirecting to index.php");   
    }

    $user = $_SESSION['username'];
    $sql = "CREATE TABLE $user (id int(5) NOT NULL)";
    $result = mysql_query($sql);

    if(!$result) {
        echo "FAILED";
    }
    echo "CREATED";
?>

dbconnection.php文件正常工作,因为我的所有其他页面都调用它来执行其他任务。

2 个答案:

答案 0 :(得分:2)

不要那样做!

为什么不在一个包含所有用户的所有数据的表中插入新行?

$sql = "INSERT INTO users (username) VALUES ('".$sql."')";

答案 1 :(得分:1)

根据我的经验,为每个用户创建每个表是非常不值得推荐的,因为它在空间和资源方面非常昂贵。如果Facebook做同样的事情,他们的数据库将拥有11亿个表!而不是他们所有这些成员都有 1表。使用一个表,然后保留主键列,例如用于识别此人的ID。例如

$sql = "CREATE TABLE IF NOT EXISTS users (
          id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
          names VARCHAR(100),
          email VARCHAR(100),
          password VARCHAR(200)
        )";
mysql_query($sql) or die(mysql_error());

然后当用户注册时,id列会自动递增,因此他/她将拥有一个唯一的ID,您可以使用它来跟踪他/她,就像这样;

$res = mysql_query("SELECT * FROM users WHERE id ='".$id."'") or die(mysql_error());
$data = mysql_fetch_assoc($res);
echo $data['names']." ".$data['email']; /* names, email, password ... etc */

这要好得多。而不是创建100万个表,您可以为所有100万人提供1个表。

问候!