2011-10-16 5 views
-2

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

usertable (id, userid, name) 
comments (id, commentname, date) 

Примечание: usertable.id не то же самое, как comments.id, и они оба autoincrement

Как я могу обновить эти таблицы, чтобы исправить эту проблему?


Update

Является ли этот код хорошо для всех пользователей получают свои голоса, когда кто-то проголосовал, как Тило дикарь сказал мне?

$sth = thumbsup::db()->prepare(
    'INSERT INTO' 
    .thumbsup::config('database_table_prefix') 
    .'votes_users(vid, userid) VALUES (?,?)'); 

$sth->execute(array($this->vid, $userid)); 
+2

Вам абсолютно необходимо улучшить свой формат вопроса. –

+0

Когда вы говорите, что «id of usertable - это не то же самое, что id comments», то как были созданы идентификаторы в таблице категорий, являются ли они автоинкрементами? – Melsi

+0

ids в категории таблица создана? Я не понимаю, что вы имеете в виду. да, они оба являются автоинкрементами. –

ответ

0

EDIT: Переписано для использования отношений «многие ко многим», поскольку текущие таблицы не могут быть изменены.

Создайте новую таблицу с именами comments_users с этими полями: cuid (первичный ключ и автоматический прирост) | cid | UID

Затем получить все комментарии пользователя с этим кодом:

$user_id = '1234'; 

// get all the user's comment ids from comments_users table 
$find = mysql_query("SELECT `cid` FROM `comments_users` WHERE `uid` = '".$user_id."'"); 

// generate a query that grabs all those comments 
$load = "SELECT * FROM `comments` WHERE "; 
while ($row = mysql_fetch_array($find) { 
    $load .= "`id` = '".$row['cid']."' OR "; 
} 

// shop off the last OR 
$load = substr($load,0,-4); 

// put all the user's comments into comments array 
$q = mysql_query($load); 
while ($comment = mysql_fetch_array($q)) { 
    $comments[] = $comment 
} 

print_r($comments); 

Насколько вставки идет, вы будете вставлять комментарии в таблицу комментарии, как обычно, но тогда вы бы также вставить строка в таблицу comments_users, заполняющую соответствующий cid и uid для этого комментария

+0

Вы имеете в виду идентификатор usertable и id комментариев? я не могу их изменить.я только хочу иметь код sql для того чтобы написать как sbrattla сказало. спасибо за быстрый ответ –

+0

Я имею ввиду, что я не могу изменить их, потому что они уже записаны во всех моих php-файлах. поэтому я буду искать их всех !! лол . не могу написать sql-код для управления этими идентификаторами и получать комментарии для каждого пользователя? thanks –

+0

^^ Отвечено редактировать для many-to-many –

1

У вас есть два варианта:

  1. добавить 'UID' столбец таблицы комментариев, который ссылается на столбец 'ID' в usertable в. Таким образом, у вас есть способ отслеживать, какие комментарии принадлежат тем пользователям.

  2. Создайте таблицу 'user_comment' с столбцами 'uid' и 'cid'. Этот параметр оставляет две существующие таблицы такими, какими они есть, и таблица «user_comment» отвечает за отслеживание того, какие комментарии принадлежат тем пользователям.

+0

спасибо за быструю помощь lol Мне нравится этот сайт lol. но, пожалуйста, вы можете дать мне код mysql для написания на моем php, пожалуйста. спасибо –

+0

Если вы создали две другие таблицы, то создание третьего не должно быть сложнее, чем вы уже сделали. Я поклонник убеждения, что, когда нужно делать часть работы, результат обучения больше, чем если бы все было подано на серебряной тарелке. Итак, советую, чтобы ваши руки были грязными, и попытайтесь его запустить и запустить. Если у вас есть проблемы с этим, вы всегда можете вернуться с конкретной проблемой. – sbrattla

+0

спасибо за ваш совет, им очень понравилось дикарь тило, он навязал мне код. и таблицы, которые не я их навязывал, если бы это был я, я смог создать третью. в любом случае, если вы можете помочь приветствовать, если нет, вы теряете время, чтобы написать в моем вопросе. Я написал свой вопрос, потому что действительно я не могу его создать. у меня есть, но это были ошибки. –

Смежные вопросы