2011-03-11 7 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

사용자 테이블에 user_id ID를 부여하면 링크 테이블에 ID 번호 link_id을 부여 할 수 있습니다. 그런 다음 구조가 : union_id, user_id, link_id 인 통합 테이블을 생성합니다. 그런 다음 링크가 생성되면 엔트리를 만들고, mysql_insert_id()를 유지하고, 현재 사용자 ID를 얻고, 공용체를 만듭니다. 그런 다음 사용자 ID를 가져와 유니언 테이블을 통해 모든 노트를 조회 할 수 있습니다. 절대 사용자별로 테이블을 만들지 마십시오!