MySQL вставлять в новые столбцы каждый раз - PullRequest
2 голосов
/ 11 марта 2011

У меня есть код ниже:

<?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 ]

3 голосов
/ 11 марта 2011

У вас есть фундаментальное недопонимание того, как идут таблицы базы данных.Вы не создаете столбец или таблицу для каждого пользователя.Вы создаете одну таблицу для всех пользователей, и у вас есть метод, позволяющий однозначно определить, к какому пользователю относится строка.

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 голосов
/ 11 марта 2011

Вы бы дали ID своей таблице пользователей, скажем, user_id, затем вы бы дали ID своей таблице ссылок, скажем, link_id.Затем вы создадите таблицу объединения, структура которой будет: union_id, user_id, link_id.Затем, когда ссылка будет создана, создайте запись, сохраните mysql_insert_id (), получите текущий идентификатор пользователя и создайте объединение.Затем вы можете получить идентификатор пользователя и просмотреть все его заметки через таблицу объединения.Определенно НЕ создавайте таблицу для каждого пользователя!

...