Php 调试不使用';我跑不好

Php 调试不使用';我跑不好,php,mysql,pdo,Php,Mysql,Pdo,我正在使用PHP OOP开发我的项目,但我遇到了一个问题 基本上,我制作了一个表格来更新表中的一些数据: <form method="POST" action=""> <div class='row'> <div class='col-md-6'> <div class='box box-primary'> <div cla

我正在使用PHP OOP开发我的项目,但我遇到了一个问题

基本上,我制作了一个表格来更新表中的一些数据:

<form method="POST" action="">
    <div class='row'>
        <div class='col-md-6'>
            <div class='box box-primary'>
                <div class='box-body'>
                    <div class='form-group'>
                        <label>Page Meta:</label>
                        <input type='text' name='page_meta' class='form-control' id='usr' value='<?php $pageSet->GetMeta(); ?>'>
                    </div>
                    <div class='form-group'>
                        <label>Page Keywords:</label>
                        <input type='text' name='page_keywords' class='form-control' id='usr' value='<?php $pageSet->GetKeywords(); ?>'>
                    </div>
                    <button type='submit' name='ersal' class='btn btn-primary'>Submit</button>&nbsp;
                    <button type='reset' class='btn'>Reset</button>
                </div>
            </div>
        </div>
    </div>
</form>
如您所见,我从
Page
调用
NewDetails
类,如下所示:

public function NewDetails($pagemeta,$pagekeywords,$pageurl)
    {
        if(!empty($pagemeta)&&!empty($pagekeywords)&&!empty($pageurl))
        {
            $reg = $this->_db->prepare("UPDATE pages SET page_meta = ? ,page_keywords = ? WHERE page_url = ?");
            $reg->bindParam(1,$pagemeta);
            $reg->bindParam(2,$pagekeywords);
            $reg->bindParam(3,$pageurl);
            $reg->execute();
            echo '<META HTTP-EQUIV="Refresh" Content="0; URL=viewpage.php?page_url=homepage">';    
        }
    }
然后它说:

对象(PDO语句)#11(1){ [“查询字符串”]=> 字符串(68)“更新页面集页面\元=?,页面\关键字=?其中页面\ url=?”
}

你到底有什么问题?您的代码没有任何您想要从中获得结果的输出

若你们想从NewDetails中得到结果,你们应该返回你们放在“echo”语句中的html标签。在NewDetails方法中,mean使用return而不是echo。因为您的NewDetails方法现在没有任何返回类型,并且它的返回是无效的

最后,如果您想从NewDetails中获得结果,应该在操作表单中重命名$notice变量,因为您已经为$notice类数组创建了新索引,但在下一行中,您在同一个变量中写入了新的详细信息。样本:


NewDetails方法:

public function NewDetails($pagemeta,$pagekeywords,$pageurl){
    if(!empty($pagemeta)&&!empty($pagekeywords)&&!empty($pageurl)){
        $register = $this->_db->prepare('UPDATE pages SET page_meta = :page_meta, page_keywords = :page_keywords WHERE page_url = :page_url');
        $register->bindParam(':page_meta', $pagemeta);
        $register->bindParam(':page_keywords', $pagekeywords);
        $register->bindParam(':page_url', $pageurl);
        return($register->execute() ?: false);
    }else{
        return false;
    }
}


您是否检查了服务器错误日志?如果没有错误,您确定此代码按预期运行吗?您可以随时尝试不时插入
var\u dump
以找到答案。@tedman它在XAMPP上运行,值得注意的是
echo'
东西是一种非常笨拙的重定向方式。只需与
位置一起使用:
.XAMPP或其他无关紧要的东西,它们都有某种错误日志,可以告诉您许多重要的事情。
$pageurl=$\u GET['page\u url']
当他使用
bindParam()
准备好的查询时,SQL注入是如何开放的?@Barmar。你说得对。对不起,我弄错了。这是早晨,我现在醒来了:我编辑了我的帖子。谢谢你的关注
if(!empty($pagemeta)&&!empty($pagekeywords)&&!empty($pageurl))
        {
            $reg = $this->_db->prepare("UPDATE pages SET page_meta = ? ,page_keywords = ? WHERE page_url = ?");
            $reg->bindParam(1,$pagemeta);
            $reg->bindParam(2,$pagekeywords);
            $reg->bindParam(3,$pageurl);
            $reg->execute();
            die(var_dump($reg));
        }
public function NewDetails($pagemeta,$pagekeywords,$pageurl){
    if(!empty($pagemeta)&&!empty($pagekeywords)&&!empty($pageurl)){
        $register = $this->_db->prepare('UPDATE pages SET page_meta = :page_meta, page_keywords = :page_keywords WHERE page_url = :page_url');
        $register->bindParam(':page_meta', $pagemeta);
        $register->bindParam(':page_keywords', $pagekeywords);
        $register->bindParam(':page_url', $pageurl);
        return($register->execute() ?: false);
    }else{
        return false;
    }
}
if (isset($_POST['ersal'])){
    $ersal = new Page();
    
    // update query
    $update_status = $ersal->NewDetails($_GET['page_url'], $_POST['page_meta'], $_POST['page_keywords']);
    
    // see the result of update
    var_dump($update_status);
    
    // your getNotice method that you don't puted there in your post
    $notice = $ersal->getNotice();
}