簡體   English   中英

PHP:識別成功存儲在數據庫中的數據的函數

[英]PHP : Function that recognizes data successfully stored in database

我正在嘗試在PHP中找到一種方法,一旦將數據成功存儲在數據庫中(在這種情況下是注冊數據),PHP便可以通過某種方法來識別這種情況,該函數可以執行下一個過程,例如加載一個包含指向用戶電子郵件的鏈接以進行帳戶驗證的頁面。 同樣,在加載該頁面時,最好的方法是header()。 我有一個偷偷摸摸的感覺,會議可能是路要走。 無論如何,我們都會收到所有建議:))))))

我的問題是我想在特定位置執行header(),並且編寫了以下代碼:

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

我已經知道,此代碼作為我正在使用的PDO類的一部分,可以檢查MySql數據庫中的行是否剛剛通過$ statement-> execute()更新了; 但是,由於已經有輸出,標題將不起作用,我會收到此錯誤:無法修改標題信息-標題已由發送者發送(輸出開始於.....但是,如果我將header()放在輸出之前,則會得到此信息錯誤:PHP致命錯誤:在...上的非對象上調用成員函數rowCount()……我需要使頁面根據成功的數據庫事務進行重定向,但是已經由輸出我想執行該命令的時間.........我已經看到了JS解決方案,但是如果關閉該站點,則該站點實際上將停止正常運行........

如果無法存儲數據,則數據庫通常返回錯誤。 使用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()函數中。 除非您的應用程序事先編寫了任何輸出,否則沒有理由不起作用。

我知道的最直接的方法是將數據存儲在數據庫中,然后重新查詢數據。 如果數據返回,則顯然已正確存儲了該數據。

至於是否使用標題,我認為沒有問題。 只要確保設置了標題之后,下一行就是“ exit();”。 因此執行將在當前頁面上停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM