2011-03-11 70 views
2

我有下面的代碼:MySQL的插入插入新列的每個時間

<?php 
$con = mysql_connect("localhost","will","blahblahblah"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("bombom", $con); 

$sql="INSERT INTO links (link, notes) 
VALUES 
('$_POST[link]','$_POST[notes]')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "1 record added"; 

mysql_close($con) 
?> 

這增加了一個新的記錄表在我的數據庫。我會用這個數據庫來處理多個用戶,每個用戶應該有自己的表還是他們自己的記錄?

我只是在想自己的記錄,但我怎麼編碼它,以便它爲每個人創建兩個新的列鏈接和註釋從表單提交併添加到他們的記錄?

+1

請務必閱讀有關SQL注入。你發佈的代碼是致命的。 – Mat

回答

3

你對數據庫表的轉變有一個基本的誤解。您不爲每個用戶創建一個列或表。您爲所有用戶創建一個表,並有一個方法來唯一標識該行所屬的用戶。

table users: 
    id int 
    name varchar(32) 
    password varchar(3) 

table links: 
    user_id int // foreign key pointing to users.id 
    link text, 
    notes text 

然後,找到任何一個用戶的鏈接,你會做

SELECT link, notes FROM links WHERE useri_id=XXX; 
+0

馬克就在這裏。但是還有其他一些事情需要注意。您的示例代碼正在被黑客入侵。閱讀SQL注入並使用預準備語句。接下來,PHP中的mysql_函數是舊的。使用'mysqli_'系列函數或'PDO'。人們會爭論哪個更好 - 沒有人會爭辯說你應該使用mysql_' – Erik

0

你會給你的用戶表一個ID,說user_id,那麼你會給你的鏈接表一個ID,說link_id。然後,您將創建一個聯合表,其結構爲:union_id,user_id,link_id。然後,當創建一個鏈接時,創建該條目,保存mysql_insert_id(),獲取當前用戶標識並創建聯合。然後,您可以獲取用戶標識並通過聯合表查找所有筆記。絕對不要爲每個用戶製作一張桌子!