检查何时从另一个PHP页面执行查询

检查何时从另一个PHP页面执行查询,php,mysql,sql,class,mysqli,Php,Mysql,Sql,Class,Mysqli,我有一个简单的问题,我使用一个类,其中我有: /////MY CLASS public function resetpassword($upass,$tokenrecover,$usermail) { try { global $statreset; $new_password = password_hash($upass, PASSWORD_DEFAULT); $stmt = $this->conn->prepar

我有一个简单的问题,我使用一个类,其中我有:

/////MY CLASS

public function resetpassword($upass,$tokenrecover,$usermail)
{
    try
    {
        global $statreset;
        $new_password = password_hash($upass, PASSWORD_DEFAULT);

        $stmt = $this->conn->prepare("UPDATE users SET user_pass = '".$new_password."' WHERE verification_token = '".$tokenrecover."'" );
        $userRow=$stmt->fetch(PDO::FETCH_ASSOC);            
        $stmt->bindparam(":upass", $new_password);
        if ($stmt->execute()){  
        $statreset ="TRUE";
        ......
现在,我对这些东西不太了解,也许这个问题会很愚蠢,但当我从另一个页面运行函数时:

            ////OTHER_PAGE.PHP

            $user->resetpassword($upass,$tokenrecover,$usermail);
            echo $statreset;
            if ($statreset =="TRUE"){
            echo "query done";
            }
$statreset = $user->resetpassword($upass,$tokenrecover,$usermail);
echo $statreset;
if ($statreset =="TRUE"){
    echo "query done";
}
我将变量$statreset放入本地主机,当我在本地主机上运行脚本时,一切正常。。。但这是正确的方法吗?我的意思是,我正在本地主机上尝试,如果服务器速度慢怎么办

当类中的查询完成时,if($statreset==“TRUE”){将运行吗

这有什么意义吗?还有另一种方法可以知道何时以更好的方式完成查询


非常感谢

与其声明一个全局值,为什么不让函数返回一个值呢?例如,在resetpassword()函数中:

if ($stmt->execute()) {
    return "TRUE";
} else {
    return "FALSE";
} 
然后在另一页中:

            ////OTHER_PAGE.PHP

            $user->resetpassword($upass,$tokenrecover,$usermail);
            echo $statreset;
            if ($statreset =="TRUE"){
            echo "query done";
            }
$statreset = $user->resetpassword($upass,$tokenrecover,$usermail);
echo $statreset;
if ($statreset =="TRUE"){
    echo "query done";
}
另请参见:

还有另一种方法

resetpassword()不返回该值。在另一个页面中,如果resetpassword()出错,则不会获得执行resetpassword()的结果,并引发异常

resetpassword函数在执行时捕获异常

示例

/////MY CLASS

public function resetpassword($upass,$tokenrecover,$usermail)
{
    try
    {
        $new_password = password_hash($upass, PASSWORD_DEFAULT);

        $stmt = $this->conn->prepare("UPDATE users SET user_pass = '".$new_password."' WHERE verification_token = '".$tokenrecover."'" );
        $userRow=$stmt->fetch(PDO::FETCH_ASSOC);
        $stmt->bindparam(":upass", $new_password);
        if (!$stmt->execute()){
            throw Exception("some error");
        }
        ......
    }



////OTHER_PAGE.PHP
try{
    $user->resetpassword($upass,$tokenrecover,$usermail);
    echo "query done";
} catch(Exception $e){
    echo 'Message:' .$e->getMessage();
}

谢谢,我对这些东西不太了解,但是当我调用:$user->resetpassword($upass,$tokenrecover,$usermail)时,我调用该函数的主页将等待执行?这样“echo$statreset;”就可以了?我的问题有意义吗?谢谢,没问题!是的,它将等待执行。您对
resetpassword()的调用
将同步运行,
resetpassword()
函数中的所有函数调用(包括数据库访问调用)也将同步运行。因此,您不需要任何特殊代码来等待返回值——默认情况下,您的代码将已经等待
resetpassword()的返回值
在恢复执行之前。