PHP $ _GET文件没有从mysql数据库中检索数据

时间:2015-09-18 05:51:46

标签: php mysql hyperlink

我有PHP脚本试图从我的mysql数据库中读取数据。第一个名为news.php的脚本从我的数据库中的某些行读取数据,并以摘要形式显示。它还为每篇文章生成一个唯一的超链接,有人可以点击这些超链接并阅读完整的文章。

这是从我的数据库中检索摘要的news.php

<?php
    // connection string constants
    define('DSN', 'mysql:dbname=mynewsdb;host=localhost');
    define('USER', 'myadmin');
    define('PASSWORD', 'pwd2015');

    // pdo instance creation
    $pdo = new PDO(DSN, USER, PASSWORD);

    // query preparation
    $stmt = $pdo->query("
        SELECT title, introtext, id, created, created_by, catid
        FROM mynews_items
    ");

    // fetching results
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // if this returns 0 then it means no records are present
    echo count($result) . "\n";

    // the loop should print valid table
    foreach ($result as $index => $row) {
        if ($index == 0) echo '<table>';
        echo <<<HTM
<tr>
    <td>
        <span class="post-date">{$row['created']}</span>
    </td>
</tr>
<tr>
    <td>
        <h2 class="blog-post-title">{$row['title']}</h2>
    </td>
</tr>
<tr>
    <td>
        <p>
            {$row['introtext']}
        </p>
    </td>
</tr>

<tr>
    <td>
        <p>

            <a href='read.php?id={$row['id']}'><input type="button" value="Read More" /></a>
        </p>

    </td>
</tr>
<tr>
    <td>
        <div class="blog-meta">
            <img src="img/avatar.png" alt="Avatar" />
            <h4 class="blog-meta-author">{$row['created_by']}</h4>
            <span>Category: {$row['catid']}</span>
        </div>
    </td>
</tr>
HTM;
        if ($index == (count($result)-1)) echo '</table>';
    }

当您单击<a href='read.php?id={$row['id']}'><input type="button" value="Read More" /></a>生成的超链接时,read.php脚本应检索并显示我的数据库中的完整文章。存储文章的字段名为fulltext

这是read.php文件

      <?php
    // connection string constants
    define('DSN', 'mysql:dbname=mynewsdb;host=localhost');
    define('USER', 'myadmin');
    define('PASSWORD', 'pwd2015');

    // pdo instance creation
    $pdo = new PDO(DSN, USER, PASSWORD);

    // query preparation
    $stmt = $pdo->query("
        SELECT fulltext
        FROM mynews_items
    ");
    echo htmlspecialchars($_GET["fulltext"]);

?>

有人可以指出我在read.php文件中犯的错误,因为它加载为没有任何数据的空白页。

UPDATED read.php 这是更新的文件,仍然返回空白页面。任何人都可以指出任何错误吗?

<?php
        $id = $_GET['id'];
        if(isset($_GET['id']))

    // connection string constants
        define('DSN', 'mysql:dbname=mynewsdb;host=localhost');
        define('USER', 'myadmin');
        define('PASSWORD', 'pwd2015');

    // pdo instance creation
        $pdo = new PDO(DSN, USER, PASSWORD);

    // query preparation
    // $stmt = $pdo->query("SELECT id, fulltext FROM fm16p_k2_items WHERE id='{$row['id']}'", PDO::FETCH_ASSOC);
    {
    $sql = mysql_query("SELECT fulltext * FROM fm16p_k2_items WHERE id = '{$id}'");
    $row = mysql_fetch_object($sql);
}

    echo $row->fulltext;

?>

4 个答案:

答案 0 :(得分:1)

尝试

$sql = $pdo->prepare("
    SELECT fulltext
    FROM mynews_items WHERE id = :id");

$sql->execute(array(':id' => $_GET['id']));
$stmt = $sql->fetchAll();

答案 1 :(得分:0)

我没有查看上面的代码,但是在下面的代码中,你没有抓住一行,而你正在获取所有fulltext,执行以下任一操作:

$stmt = $pdo->query("SELECT fulltext FROM mynews_items", PDO::FETCH_ASSOC);

只获取一行,但正如Ali Idrees所说,你需要一个WHERE子句(即SELECT fulltext FROM mynews_items WHERE id = 3),或者:

foreach ($conn->query($sql) as $row) {
    echo $row['fulltext'];
}

获取数据库中的所有全文并打印它们。

编辑:此外,我们强烈建议您使用预准备语句:

$prep = $pdo->prepare("SELECT fulltext FROM mynews_items WHERE id = :id");
$prep->bindParam(":id", $id);
$prep->execute();
if($prep->fetch()){
    echo $prep['fulltext'];
}

答案 2 :(得分:0)

你可能已经得到了你想要的答案,但我想强调链接中的输入字段不是一件好事。但是,如果您愿意,可以将链接设置为看起来像输入字段。

答案 3 :(得分:-1)

您在获取WHERE

时错过了fulltext条款