我有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;
?>
答案 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
条款