【问题标题】:How to insert the rows in the database mysql table in the following?如何在下面的数据库mysql表中插入行?
【发布时间】:2012-01-30 14:00:42
【问题描述】:

我有两个表名为:Blog 用于显示博客文章,cmets 用于显示每个博客文章的 cmets 部分。

这些字段如下:

博客:

1: blog_id

2:标题

3:身体

4:作者

5:更新

评论:

1: cmets_id

2:名称

3:电子邮件

4:身体

5: blog_id

两个表的 blog_id 字段必须相同。

现在我想要的是假设 blog_id = "2",我正在写评论,那么插入查询是什么,以便当我访问 index.php?blog_id=2 时,我只得到那个特定的 cmets发帖。

我的意思是如何为特定 blog_id 插入 cmets?

我试过这个查询插入:

INSERT INTO cms.comments(blog_id, name,email,comments_body)
                VALUES (
                    '".$arr['blog_id']."',
                    '".$arr['name']."',

                    '".$arr['email']."',
                    '".$arr['body']."'
                ) );

【问题讨论】:

  • 它就像 mysql 中的外键。
  • @fahim Parkar:我试过这个:INSERT INTO cms.cmets(cmets_id, username,email,cmets_body) VALUES ('".$arr['blog_id']."', '".$ arr['username']."', '".$arr['email']."', '".$arr['cmets_body']."' ) WHERE cms.cmets.blog_id = '$blog_id'" );
  • 请更新您的问题...

标签: mysql


【解决方案1】:

好的,我自己做了[不需要实现外键]。

这里是解决方案。

要求cmets的“blog_id”字段必须等于blog的“blog_id”

这可以通过以下方式完成。首先通过以下语句获取博客的“blog_id”...

$sql = "SELECT * from blog WHERE blog_id = '$blog_id'";
$res = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($res);
$iItemId = (int)$_POST['blog_id']; // obtaining necessary information

这样的using INSERT语句,插入它...

mysql_query("INSERT INTO amityadav.comments(blog_id, name,url,email,body)
                VALUES (
                    '$iItemId',   //This variable is from the blog_posts' "blog_id" which will be inserted into the comment's "blog_id"
                    '".$arr['name']."',
                    '".$arr['url']."',
                    '".$arr['email']."',
                    '".$arr['body']."'
                )");

现在为了检索它,请使用流动查询...

$sql = "SELECT * from blog WHERE blog_id = '$blog_id'";
$res = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($res);
$iItemId = (int)$_GET['blog_id']; // obtaining necessary information
$comments = array();
$result = mysql_query("SELECT * FROM comments WHERE `blog_id` = '{$iItemId}' ORDER BY comments.id ASC ");

使用这些查询,我已经成功实现了我想要的...:)

【讨论】:

    【解决方案2】:

    你在 MySQL 中尝试过外键吗?

    更多信息:-

    http://dev.mysql.com/doc/refman/5.0/en/example-foreign-keys.html

    【讨论】:

    • 通过链接后,我了解到一个新语句:SELECT '@last := LAST_INSERT_ID();'现在需要将变量 @last 插入到另一个表查询中。但我在不同的地方插入两个值
    【解决方案3】:

    您需要使用带有外键的父子表概念。 MySQL 支持 Foreign Keyscascading deletes 作为其数据库存储引擎的一部分。

    您需要使用InnoDB 存储引擎。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 2013-01-20
      • 2012-11-16
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多