【问题标题】:How to debug my php code [closed]如何调试我的 php 代码 [关闭]
【发布时间】:2013-08-09 16:46:38
【问题描述】:

当我在表格中有 1 条评论时,它不会显示任何内容。 当我在表中有 2 个 cmets 时,它只显示第二个。我想由于某种原因它跳过了第一个,有人可以帮忙吗? 非常感谢:)

require_once('config.php');
            if(!isset($_GET['NewComment'])) {
            echo "<a style='float:right;' href='?NewComment' class='btn btn-primary'> New Comment </a> <br /><br />";
            $per_page = 4;
            $start = 1;
            if(!isset($_GET['page'])) {
            $page = 1;
            } else {
            $page = $_GET['page'];
            }
            if($page <= 1) {
            $start = 1;
            $page = 1;
            } else {
            $start = $page * $per_page - $per_page;
            }
            $next = $page+1;
            $previous = $page-1;
            $GetAllComments = $con->query("SELECT * FROM comments LIMIT $start, $per_page");
            $num_rows = $GetAllComments->num_rows;
            $num_pages = $num_rows / $per_page;
            while($GAC = $GetAllComments->fetch_object()) {
            echo "<div class='well' style='overflow:auto;'> <h3>". $GAC->Title. "</h3>
            ". $GAC->Content. " <hr /> <em> Posted By ". $GAC->PosterName ." </em>
            </div>";
            }
            for($i = 1; $i <= $num_pages; $i++) {
                $pagen = $page+1;
                $pagep = $page-1;
                    echo "  
                    <div class='pagination'>
                    <ul>
                    "; 
                    if($page > 1) {
                    echo "
                    <li><a href='?page=$previous'>".$pagep."</a> </li>
                    ";
                    }
                    echo "
                     <li class='disabled'><a href='#'>$page</a></li>
                     ";

                     echo "
                    <li>  <a href='?page=$next'>" . $pagen . "</a></li>
                    </ul>
                    </div>
                    ";
                    }
                    }
                        elseif(isset($_GET['NewComment'])) {
                            echo "
                            <form action='' method='post'>
                            <h4>First Name:</h4><input type='text' name='fname' placeholder='First Name'>
                            <h4>Title:</h4><input type='text' name='title' placeholder='Comment Title'>
                            <textarea name='editor1'>&lt;p&gt;&lt;/p&gt;</textarea>
                            <script>
                            CKEDITOR.replace( 'editor1' );
                            </script><br />
                            <input type='submit' name='post' value='Post' class='btn btn-success'>
                            </form>
                                        ";
                                        if(isset($_POST['post'])) {

                    $FirstName = $_POST['fname'];
                    $Title = $_POST['title'];
                    $Comment = $_POST['editor1'];
                    $addcomment = $con->prepare("INSERT INTO comments (PosterName, Title, Content) VALUES ('$FirstName','$Title','$Comment')");
$addcomment->execute();

                                        }
 }
        ?>

【问题讨论】:

  • 又一个“请为我调试代码”问题...
  • 我试过调试,可惜没有成功:(
  • 那你得问“如何调试PHP代码”的问题
  • 我注意到如果我删除 LIMIT $start, $per_page 那么它可以正常工作,但这会破坏我的分页
  • 它不会破坏你的分页,因为你根本没有分页,因为你没有所有记录的数量

标签: php mysql mysqli pagination paging


【解决方案1】:

在某种程度上,调试是非常简单的事情。为此,您只需要两件事:

  • 了解,您的代码做了什么,为什么。这是必不可少的部分。
  • 每个语句或函数返回的每个变量、值或结果的可视化表示。

有了这两个,你可以很容易地比较它们。

说,你有一个 PHP 程序来构造一个 SQL 查询。 你检查过这个程序的结果吗?没有。
虽然你应该这样做。

因此,您必须将结果回显:

echo "SELECT * FROM comments LIMIT $start, $per_page"

如果查询没问题,并且它在控制台中返回正确的结果 - 那么,现在我们必须检查下一个变量,$num_rows

var_dump($num_rows);

上面写的是 1 还是 2?

...等等,对于所涉及的每个值或语句。

此外,您的分页已损坏,因为您需要为此提供许多所有记录。这是一个权利pagination example

【讨论】:

    猜你喜欢
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2011-09-22
    • 2017-11-02
    • 1970-01-01
    相关资源
    最近更新 更多