2014-01-16 56 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."')";