2014-01-16 31 views
-2

不知有人能帮忙吗?自动在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文件正常工作,因为我所有的其他页面调用它来执行其他任务。

+1

您确定要为每个用户使用一张桌子吗?这似乎非常不寻常。 –

+0

添加echo $ sql;和“或死(mysql_error())”在适当的地方。 (这看起来像一个坏主意BTW)。并且不要使用已弃用的方法。 – Strawberry

+0

定义“无法工作” - 会发生什么? –

回答

1

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

$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张桌子。

商祺!

+0

谢谢布莱恩,比没有解释的时候不要这么做更有帮助! – skinmanater

+0

不客气 – Kimutai

2

不要这样做!

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

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