0

私はPHPで方法を見つけようとしています。データがデータベース(この場合は登録データ)に正常に保存されると、PHPはこれを、おそらく関数を使用して認識し、次のプロセスを実行できるようになります。アカウント確認のためにユーザーの電子メールへのリンクがあるページをロードします。また、そのページをロードする際には、header()が最適な方法です。セッションが進むべき道かもしれないという卑劣な気持ちがあります。とにかくすべてのアドバイスはありがたいことに受けました:)))))))

私が抱えている問題は、特定のポイントでヘッダー()を実行したいということです。そのために、このコードを記述しました。

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

私が使用しているPDOクラスの一部としてのこのコードは、MySqlデータベースの行が$ statement-> execute()を介して更新されたかどうかを調べることができると考えました。ただし、すでに出力があるため、ヘッダーは機能しません。このエラーが発生します:ヘッダー情報を変更できません-ヘッダーは既に送信されています(出力は.....で開始されました。ただし、出力の前にheader()を配置すると、次のようになります。エラー: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

私が知っている最も簡単な方法は、データをデータベースに保存してから、データを再度クエリすることです。データが戻ってきた場合、データは明らかに正しく保存されています。

ヘッダーを使用するかどうかに関しては、問題はありません。ヘッダーを設定した後、次の行が「exit();」であることを確認してください。そのため、実行は現在のページで停止します。

于 2013-01-27T23:39:00.393 に答える