我试图在PHP中找到一种方法,一旦数据成功存储在数据库中,在这种情况下注册数据,PHP有一种方法可以识别这个,也许有一个函数,然后可以执行下一个过程,例如,加载一个页面,该页面包含用户电子邮件的链接以进行帐户验证。 另外在加载页面时header()是最好的方法。 我有一种偷偷摸摸的感觉,会议可能是要走的路。无论如何,感谢所有的建议:)))))))
我遇到的问题是我想在特定点执行header()并且我已经编写了这样的代码:
$rowcount = $statement->rowCount();
if ($rowcount === 1){
header('Location:verifyemail.php');
}
我已经认为这段代码作为我正在使用的PDO类的一部分可以检查MySql数据库中的行是否刚刚通过$ statement-> execute(); 但是由于已经输出标题不能正常工作,我收到此错误: 无法修改标头信息 - 已经发送的标头(输出始于..... 但是如果我在输出之前放置header(),我会收到此错误: PHP致命错误:在一个非对象上调用成员函数rowCount()......... 我需要根据成功的数据库事务让页面重定向,但是在我想要执行的时候已经有了输出......... 我见过JS解决方案,但如果关闭,该网站将基本停止正常运行........
答案 0 :(得分:1)
如果无法存储数据,数据库通常会返回错误。使用PDO时,您可以这样做:
$db = new PDO(...);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$stmt = $db->prepare('INSERT INTO table (column) VALUES (?)');
$stmt->execute(array('something'));
doSomethingWhenInsertWasSuccessful();
}
catch (PDOException $e) {
doSomethingBecauseInsertWasNotSuccessful();
}
您可以安全地在header()
功能中添加doSomethingWhenInsertWasSuccessful()
- 重定向。除非您的应用程序事先写入任何输出,否则没有理由不这样做。
答案 1 :(得分:0)
我所知道的最直接的方法是将数据存储在数据库中,然后重新查询数据。如果数据退出,显然可以正确存储。
至于是否使用标题,我认为它没有任何问题。只需确保在设置标题后,下一行是“exit();”所以执行将在当前页面上停止。