Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将URL参数传递给Mysql查询_Php_Html_Mysql - Fatal编程技术网

Php 将URL参数传递给Mysql查询

Php 将URL参数传递给Mysql查询,php,html,mysql,Php,Html,Mysql,希望我能得到一些帮助 我有一个controller.php,它查询数据库以显示最近添加的文章列表 try { $recents = $pdo->query('SELECT id, blogtitle FROM article ORDER BY id DESC LIMIT 0,6'); } catch (PDOException $e) { $error = 'Error fetching blog posts: ' . $e->getMessage(); inc

希望我能得到一些帮助

我有一个controller.php,它查询数据库以显示最近添加的文章列表

try    
{
  $recents = $pdo->query('SELECT id, blogtitle FROM article ORDER BY id DESC LIMIT 0,6');
}

catch (PDOException $e)
{
  $error = 'Error fetching blog posts: ' . $e->getMessage();
  include 'error.html.php';
  exit();
}
在同一控制器中,我随后循环遍历数据并存储在数组中:

foreach ($recents as $recent)
{
    $newest[] =  array ('id' => $recent['id'], 'blogtitle' =>  $recent['blogtitle']);
}
同一controller.php加载一个article.html.php,该article.html.php将最近项目的列表显示为超链接:

<section id="secondary">
    <h2 class="recent">Recent Posts</h2>
    <?php foreach ($newest as $new):?>
    <a href="article-detail.php?id=<?php echo htmlout($new['id']);?>"><?php echo htmlout($new['blogtitle']) . "</a>";?>
    <?php endforeach; ?>
</section>
}

然后,article-detail.php使用$blogdate、title、text等以标准html显示特定的文章。因此,正如您所看到的,我在这里尝试遵循一个控制器/模板模型

然而,当我点击任何超链接时,经过这个过程,id肯定会在URL中传递,但我认为控制器没有正确地获取id,因此没有将id传递给mysql查询以检索特定的文章

本质上,当我点击其中一个文章链接时,细节页面确实会加载,但是$blogdate、$blogtext等没有定义,因为我认为id没有正确地传递到mysql查询

因此,任何关于我哪里出了问题的帮助或建议都非常感谢


干杯

您是否在PDO上启用了异常模式?默认情况下,它只是默默地从失败的调用中返回布尔值false,并且不会抛出异常。你有没有检查过这个查询是否真的返回了什么?假设get article details查询只会找到一条记录,为什么要使用循环来获取任何结果行?如果这是您正在尝试的实际代码,则在加载文章页面后立即退出代码,而不会进入DB查询部分。我已尝试捕获$\u get['id']然后在细节页面中分配给$id变量,回显$id变量,但没有传递任何内容。因此,不确定这是否是最初在URL中正确传递id的方式?什么是htmlout?此外,您的Htmlout是一个函数,不必使用htmlspecialchars。
if (isset($_GET['id']))
{
        include 'article-detail.php';
        exit();

        include  'dbinc/db.inc.php';
        include  'includes/magic.inc.php';

        try 
        {
            $sql = 'SELECT article.id, article.blogdate, article.blogtitle, article.blogtext, author.name 
            FROM article INNER JOIN author
            ON authorid = author.id
            WHERE article.id = :id';
            $s = $pdo->prepare($sql);
            $s->bindValue(':id', $_GET['id']);
            $s->execute();
        }
         catch (PDOException $e)
        {
          $error = 'Error fetching blog posts: ' . $e->getMessage();
          include 'error.html.php';
          exit();
        }

    while ($row = $s->fetch(PDO::FETCH_ASSOC))
    {
         $blogdate = $row['blogdate'];
         $blogtitle = $row['blogtitle'];
         $blogtext = $row['blogtext'];
         $authorname = $row['name'];
    }