2012-03-05 2 views
1

Я начинаю. Мне нужна помощь, пожалуйста. У меня возникла небольшая проблема в скрипте У меня есть в этом скрипте (папка администратора) Добавить статьи (эта страница работает только для добавления потоков) Моя проблема на странице (read_mor.php) Я делаю запрос с базой данных для приведения новостей это запрос.как я могу вставить комментарий к статье php, используя id

<?php 
include ('config/connect_to_mysql.php'); 
$id = $_GET["id"]; 
$fetch = mysql_query("SELECT * FROM posts WHERE id= '$id' ") or die(mysql_error()); 
while($myrow = mysql_fetch_assoc($fetch)) { 
?> 
<?php echo $myrow['title']; ?> 
<?php echo $myrow['created_on']; ?> 
<?php echo $myrow['categories']; ?> 
<?php echo $myrow['description']; ?> 
<?php echo $myrow['categories']; ?> 
<?php } ?> 

все v бог

* но когда я вставить комментарий в таблице (комментарии) все комментарии в таблице, показывает, с каким-либо постом .. !! *

мне нужно вставить комментарий с постатейно ид

эту страницу для вставки комментария

<?php 
include ('config/connect_to_mysql.php'); 

$query="INSERT INTO comments (com_id,name,url,email,comment,postid) 
     VALUES 
     ('', '$_POST[name]' , '$_POST[url]', '$_POST[email]', '$_POST[comment]', LAST_INSERT_ID(postid))" or die(mysql_error()); 

if ($query) 

$result = mysql_query($query); 

{ 
echo "<strong>Thanks!</strong><p>Your message was successfully sent.</p>"; 
} 
?> 

Таблица в базе данных ---->

comments 



structure for table `comments` 
(
    `com_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', 
    `url` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', 
    `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', 
    `comment` text COLLATE utf8mb4_unicode_ci NOT NULL, 
    `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `yes` int(11) NOT NULL, 
    `postid` int(11) NOT NULL, 
    PRIMARY KEY (`com_id`) 
) ENGINE=MyISAM DEFAULT 
</i> 

стол сообщений ------>

CREATE TABLE IF NOT EXISTS `posts` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `title` varchar(200) NOT NULL, 
    `description` longtext NOT NULL, 
    `categories` varchar(200) NOT NULL, 
    `post_meta` varchar(200) NOT NULL, 
    `post_robots` varchar(200) NOT NULL, 
    `meta_title` varchar(200) NOT NULL, 
    `meta_description` text NOT NULL, 
    `created_by` varchar(100) NOT NULL, 
    `created_on` datetime NOT NULL, 
    `imageref` varchar(300) NOT NULL, 
    `post_status` varchar(70) NOT NULL DEFAULT 'published', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=102 ; 
+2

FYI, ваш код уязвим для [SQL injection] (http://bobby-tables.com/). –

+0

Кроме того, я не понимаю, в чем проблема. Встает ли вставка? Почему вы проверяете значение истины '$ query' (которое всегда будет оцениваться как' true') вместо '$ result'? –

+0

$ result Или $ query не моя проблема .. Проблема в том, когда я добавляю комментарий, процесс выполняется успешно, но не связан с комментариями нитей – ahmedhassan

ответ

1

Я считаю, что LAST_INSERT_ID() корректно работает для полей auto_increment, которых нет в postid. Также вы не должны использовать LAST_INSERT_ID() для чего-либо другого, кроме вашего первичного ключа.

+0

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

+0

Существует несколько способов сделать это, и вы даже можете сделать это в одном запросе, но я обнаружил, что в большинстве приложений это было бы непрактично. Что вы должны попробовать, сначала получите свой postid, присвойте его переменной (в PHP) и постройте запрос для комментариев на основе этого (что-то вроде WHERE 'postid' = {$ post_id}). – Ynhockey

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