2011-03-11 2 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) 
?> 

これは私のデータベースのテーブルに新しいレコードを追加します。私はこのデータベースを持つ複数のユーザーを扱うことになります。各ユーザーが独自のテーブルを持っているか、独自のレコードを持っているのでしょうか?

私は自分のレコードだけを考えていましたが、フォームから提出されたすべてのリンクとメモに対して2つの新しい列が作成され、レコードに追加されるようにどのようにコードするのですか?

+1

あなたはSQLインジェクションについて読むことを確認してくださいにしてください。投稿したコードは致命的です。 – Mat

答えて

3

データベーステーブルの基本的な誤解があります。ユーザーごとに列または表を作成しないでください。すべてのユーザーに対して1つの表を作成し、その行がどのユーザーに属しているかを一意に識別するメソッドを持っています。その後

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_iduser_idlink_idのユニオンテーブルを作成します。次に、リンクが作成されたら、エントリを作成し、mysql_insert_id()を保持し、現在のユーザIDを取得し、共用体を作成します。次に、ユーザーIDを取得して、すべてのノートをユニオンテーブルで参照できます。間違いなくユーザーごとにテーブルを作成しないでください!

関連する問題