PHP:识别成功存储在数据库中的数据的函数

时间:2013-01-27 23:24:48

标签: php mysql

我试图在PHP中找到一种方法,一旦数据成功存储在数据库中,在这种情况下注册数据,PHP有一种方法可以识别这个,也许有一个函数,然后可以执行下一个过程,例如,加载一个页面,该页面包含用户电子邮件的链接以进行帐户验证。 另外在加载页面时header()是最好的方法。 我有一种偷偷摸摸的感觉,会议可能是要走的路。无论如何,感谢所有的建议:)))))))

我遇到的问题是我想在特定点执行header()并且我已经编写了这样的代码:

         $rowcount = $statement->rowCount();
         if ($rowcount === 1){
         header('Location:verifyemail.php');
          }

我已经认为这段代码作为我正在使用的PDO类的一部分可以检查MySql数据库中的行是否刚刚通过$ statement-> execute(); 但是由于已经输出标题不能正常工作,我收到此错误: 无法修改标头信息 - 已经发送的标头(输出始于..... 但是如果我在输出之前放置header(),我会收到此错误: PHP致命错误:在一个非对象上调用成员函数rowCount()......... 我需要根据成功的数据库事务让页面重定向,但是在我想要执行的时候已经有了输出......... 我见过JS解决方案,但如果关闭,该网站将基本停止正常运行........

2 个答案:

答案 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();”所以执行将在当前页面上停止。