链接通过跟踪脚本拉出正确的文章ID,不正确的文章文本

时间:2015-07-17 19:07:59

标签: php mysql pdo

我有一个页面显示来自不同数据库表的内容。每个部分都有一个链接,指向一个页面(例如view_article.php),其中的内容显示在其页面上。它下面的评论部分。有问题的链接是;

'<a href="'.$site.'/views/track.php?id='.$row['article_id'].'">
<font face="arial black" color="#0000CC" size="5">
Click Here For Full Story
</font>
</a>
<hr>';  

我知道有一些我完全失踪的东西,因为这个链接对我来说是正常的,因为它应该如此。这会链接到track.php页面,该页面会更新clicks列(并在PDO表单中作为我在PHP: How to increment a value in the table row to count views and to limit counts to one IP address提供的额外答案)。我的谷歌和文档有点徒劳(虽然,我认为用户贡献的主题是最接近我目前的困境 - 由dyukemedia)。我只是无法获得正确的文章文字以同步文章ID - 文章ID在每个网址访问中都是正确的;

example.com/views/view_article.php?id=4

(作为地址栏中显示的示例文章URL) - 但我的问题是第一行文章文本(即id = 1)是从数据库中提取的唯一一行。对于我的生活,我还没有能够回溯我的步骤,以找到我在这里找到的关于(可能?)的建议,以确保相对于文章ID调用正确的文章文本。即使我输入这个问题,我也有大约6个补充阅读标签同时进行(哈哈!)。得好git&#39;呃完成了!感谢您提前提供任何帮助或指示。

更多信息

我很抱歉没有提前提供查询信息;

$stmt = $pdo->prepare("
      SELECT article_id, name, title, category, clicks 
      FROM articles 
      WHERE is_published = TRUE
      ORDER BY publish_date DESC
      ");
$stmt->bindValue(':is_published', 1);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);  

这是表articles

的表结构
`article_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
`name` varchar(100) NOT NULL,
`is_published` tinyint(1) NOT NULL DEFAULT '0',
`submit_date` datetime NOT NULL,
`publish_date` datetime DEFAULT NULL,
`title` varchar(255) NOT NULL,
`article_text` mediumtext,
`category` varchar(10) NOT NULL,
`clicks` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`article_id`),
KEY `user_id` (`user_id`,`submit_date`),
FULLTEXT KEY `title` (`title`,`article_text`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;  

澄清:第一个链接示例是对名为track.php的文件的传递,该文件通过文章ID记录特定内容标题上的单击次数。从track.php开始,观众应该通过;

进入内容文章
header('Location: view_article.php?id='.$_GET['id']);
exit();

即使我用$article_id取代$_GET['id']的实验,在每个链接悬停时,也会显示正确的文章ID,并且在选中时,正确的文章ID会显示在地址栏中。目前在网站主页上的所有三种情况下,只有文章内容文本相同(由上面列出的查询调用)。

更新1

必须将主要文章导航链接更改回;

<a href="'.$site.'/views/track.php?view_article.php&id='.$row['article_id'].'">  

,因为第二篇文章ID后的所有后续链接都停止更新clicks列。所以,现在我仍然处于能够更新链接点击以跟踪某个文章内容的流行度的情况,但无法将链接连接到正确的文章文本。我总能在URL地址栏中获得正确的文章ID;

www.example.com/views/view_article.php?id=4

即使对track.php代码进行了多次调整,我仍处于僵局状态。可以任何人查看我出错的地方吗?我将包括所要求的任何其他必要信息。

1 个答案:

答案 0 :(得分:0)

感谢@ dan08和@JiFus让我知道它是 INDEED SELECT查询这个问题让我感觉很糟糕 - 太糟糕了几乎花了很多一天半,以确定我应该在view_article.php页面上查看查询;

$sql = "SELECT name, title, category, publish_date, clicks, article_text
        FROM articles  
        WHERE is_published = TRUE 
        ORDER BY publish_date DESC LIMIT 1";
$result = $pdo->query($sql);  

!=

$stmt = $pdo->prepare("
SELECT 
     article_id, name, title, category, clicks, article_text, publish_date 
FROM 
     articles 
WHERE 
     article_id = :article_id 
AND 
     is_published = TRUE 
ORDER BY 
     publish_date DESC 
LIMIT 1
");
$stmt->execute(array(':article_id' => $_GET['id']));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);  

我能够将链接更改回;

<a href="'.$site.'/views/track.php?id='.$row['article_id'].'">  

因为在track.php中,header()会将查看者发送到特定的文章ID文字网址;

header('Location: view_article.php?id='.intval($_GET['id']));

现在,这将修复我必须使用的所有内容部分的链接导航功能。帮助在正确的位置找到问题。 课程如果语句无法执行,我将无法获得正确的文章ID文本。 GRRR ...... 人为错误再次发生...... (哈哈!)