![](/img/trans.png)
[英]Data is not stored in database eventhough API successfully passed in postman
[英]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.