0

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

我遇到的问题是我想在特定点执行 header () 并且我已经编写了以下代码来执行此操作:

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

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

4

2 回答 2

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()-redirect 放入doSomethingWhenInsertWasSuccessful()函数中。除非您的应用程序事先写入任何输出,否则没有理由不这样做。

于 2013-01-28T06:13:05.297 回答
0

The most straightforward way I know of is to store the data in the database, then re-query the data back out. If the data comes back out, it was obviously stored correctly.

As far as using header or not, I see no problem with it. Just make sure after you set the header, the next line is "exit();" so execution will stop on the current page.

于 2013-01-27T23:39:00.393 回答