将数据从一个表插入另一个表

时间:2011-10-16 19:56:51

标签: php mysql sql

我在找到具有以下表结构的给定用户的注释时遇到问题:

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

注意:usertable.idcomments.id不同,它们都是autoincrement

我应该如何更新这些表来解决这个问题?


更新

当有人投票给thilo野人告诉我时,这段代码是否适合所有用户获得自己的投票?

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

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

2 个答案:

答案 0 :(得分:1)

你有两个选择:

  1. 在评论表中添加一个'uid'列,该列引用了usertable的'id'列。这样,您就可以跟踪哪些评论属于哪些用户。

  2. 创建一个包含'uid'和'cid'列的'user_comment'表。此选项保留原有的两个表,“user_comment”表负责跟踪哪些注释属于哪些用户。

答案 1 :(得分:0)

编辑:重写为使用多对多关系,因为当前表格无法更改。

使用以下字段创建一个名为comments_users的新表: cuid(主键和自动增量)| cid |流体

然后使用以下代码获取用户的所有评论:

    $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以获得该注释