2012-01-29 4 views
0

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

Поля для них являются следующие:

Для блога:

1: blog_id

2: Название

3: корпус

4: автор

5 : Обновленный

Для Комментарии:

1: comments_id

2: имя

3: электронная почта

4: тело

5: blog_id

Поле blog_id должно быть одинаковым для обеих таблиц.

Теперь я хочу, чтобы для blog_id = "2", я пишу комментарий, так что будет вставить запрос, чтобы при посещении index.php? Blog_id = 2, я получаю комментарии только для этого конкретный пост.

Я имею в виду, как вставить комментарий для определенного blog_id?

Я попробовал этот запрос для вставки:

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

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

Его, как внешний ключ в м ysql. – Sagotharan

+0

[Что вы пробовали до сих пор?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

@fahim Parkar: Я пробовал это: INSERT INTO cms.comments (comments_id, имя пользователя, адрес электронной почты, comments_body) \t \t \t \t \t ЗНАЧЕНИЯ ( \t \t \t \t \t ' "$ обр [ 'blog_id']."', \t \t \t \t \t \t '». $ обр [' имя пользователя ']. ", \t \t \t \t \t \t \t \t \t \t \t \t ' "$ обр [ 'электронная почта']."', \t \t \t \t \t \t ' "$ обр [ 'comments_body']."' \t \t \t \t \t) WHERE cms.comments.blog_id = '$ blog_id' "); –

ответ

1

Хорошо, я сделал это сам [НЕ нужно реализовывать внешний ключ].

Вот эти решения.

Требования в том, что поле «blog_id» из комментариев должен быть равен «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 

используя оператор 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 "); 

Используя эти вопросы, я успешно реализовали то, что я хотел ... :)

0

вы попробуйте внешний ключ в MySQL ли.

Дополнительной информации: -

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

+1

Перейдя по ссылке, я узнал о новом утверждении: SELECT '@last: = LAST_INSERT_ID(); Теперь переменная @last должна быть вставлена ​​в другой запрос таблицы. Но я вставляю оба значения в разных местах –

-1

Вы должны использовать родительские концепции ребенка таблицы с внешними ключами. MySQL поддерживает Foreign Keys и cascading deletes как часть механизма хранения базы данных.

Вам нужно будет использовать двигатель хранения InnoDB.

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