【问题标题】:what is it that i am doing wrong while converting [closed]转换时我做错了什么[关闭]
【发布时间】:2018-01-22 02:48:23
【问题描述】:

我需要将此 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'];

有人可以展示正确的方法吗?

【问题讨论】:

标签: php mysql pdo


【解决方案1】:

prepare()execute() 一起使用

准备好的语句基本上是这样工作的:

  1. 准备:创建一个 SQL 语句模板并将其发送到 数据库。某些值未指定,称为参数 (标记为“?”)。示例:

    INSERT INTO mtTable VALUES(?, ?, ?)

  2. 数据库解析、编译并执行查询优化 SQL 语句模板,并存储结果而不执行 它

  3. 执行:稍后,应用程序将值绑定到 参数,然后数据库执行该语句。应用程序 可以根据需要使用不同的语句多次执行该语句 价值观

试试下面的代码

<?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";
}
?>

【讨论】:

  • 像魅力一样工作真的很感激队友,非常感谢。很多祝福给你:)
  • @ChristineMay 请注意你的举止,你可以用更好的方式要求澄清。要问的地方是 meta.stackoverflow.com
  • 不确定@Shadow 发生了什么,只要登录就知道.. 无论如何感谢您的评论
  • @ChristineMay 问题在于你的问题不够具体(“太宽泛”),而社区一般不喜欢这样的问题。显然,这并不意味着没有人会回答这样的问题。为什么你的问题太宽泛了?因为在问题中您只是转储代码,基本上说“它不起作用”。在 SO 上,您应该自己进行一些基本的调试并提出错误消息或模式详细的错误描述。我们通过关闭用户来阻止用户提出此类问题。
  • 如果网站是为了寻求帮助,问问题有什么问题?除了在我无法做到的事情上寻求帮助之外,我没有发送垃圾邮件或发布任何错误信息。相信我有这样的态度和规则,有一天人们会停止使用这个网站。
猜你喜欢
  • 2012-11-07
  • 2013-02-08
  • 2012-09-20
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
相关资源
最近更新 更多