我需要将这个mysql转换为pdo我尝试了以下但我认为它错了,因为我没有显示结果。是的,对你们中的一个人来说可能很容易,但pdo对我来说是个新闻,所以感谢你的帮助:)。
实际代码
$rowperpage = 3;
// counting total number of posts
$allcount_query = "SELECT count(*) as allcount FROM posts";
$allcount_result = mysql_query($allcount_query);
$allcount_fetch = mysql_fetch_array($allcount_result);
$allcount = $allcount_fetch['allcount'];
// select first 3 posts
$query = "select * from posts order by id asc limit 0,$rowperpage ";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$id = $row['id'];
$title = $row['title'];
$content = $row['content'];
$shortcontent = substr($content, 0, 160)."...";
$link = $row['link'];
?>
<!-- Post -->
<div class="post" id="post_<?php echo $id; ?>">
<h1><?php echo $title; ?></h1>
<p>
<?php echo $shortcontent; ?>
</p>
<a href="<?php echo $link; ?>" class="more" target="_blank">More</a>
</div>
<?php
}
?>
我尝试了什么
$rowperpage = 3;
// counting total number of posts
//$allcount_query = "SELECT count(*) as allcount FROM posts";
//$allcount_result = mysql_query($allcount_query);
$query = "SELECT count(*) FROM posts";
$stmt = $db->prepare($query);
$allcount_fetch = $stmt->fetch(PDO::FETCH_ASSOC);
$allcount = $stmt->fetchColumn();
// select first 3 posts
//$query = "select * from posts order by id asc limit 0,$rowperpage ";
//$result = mysql_query($query);
$qry = "select * from posts order by id asc limit 0,$rowperpage ";
$stm = $db->prepare($qry);
while($row = $stm->fetch(PDO::FETCH_ASSOC)){
$id = $row['id'];
$title = $row['title'];
$content = $row['content'];
$shortcontent = substr($content, 0, 160)."...";
$link = $row['link'];
有人能说出正确的方法吗?
答案 0 :(得分:1)
prepare()
与execute()
准备好的陈述基本上是这样的:
准备:创建一个SQL语句模板并发送给 数据库。某些值未指定,称为参数 (标有“?”)。示例:
INSERT INTO mtTable VALUES(?, ?, ?)
数据库解析,编译和执行查询优化 SQL语句模板,并存储结果而不执行 它
执行:稍后,应用程序将值绑定到 参数,数据库执行语句。应用程序 可以根据需要多次执行语句 值
尝试以下代码
<?php
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$rowperpage = 3;
$offset = 0;
// counting total number of posts
$query = "SELECT count(id) AS allcount FROM posts";
$stmt = $db->query($query)->fetchColumn();
/******** The ABOVE QUERY LOOKS POINTLESS TO ME AS YOU NOT USING THE RESULTS FROM THAT QUERY*/
// select first 3 posts
$qry = "SELECT * FROM posts ORDER BY id ASC LIMIT ?,? ";
$stm = $db->prepare($qry);
$stm->execute(array($offset,$rowperpage));
$results = $stm->fetchall(PDO::FETCH_ASSOC);
if (count($results) > 0) {
foreach ($results as $row) {
$id = $row['id'];
$title = $row['title'];
$content = $row['content'];
$shortcontent = substr($content, 0, 160) . "...";
$link = $row['link'];
}
} else {
echo "No records found";
}
?>