检查何时从另一个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()的返回值
在恢复执行之前。