0

PHPを使用してデータベースにデータを書き込んでいます。99% の確率で、データは正しくデータベースに書き込まれます。ただし、空白のデータがデータベースに挿入されることがあります。ほとんどの場合、データをデータベースに書き込むことができるため、コードの問題ではないと思います。

データベースが存在するサーバーのインターネット接続が遅い場合、またはユーザーの PC のインターネット接続が遅い場合、これが発生する可能性はありますか?

実際には少し間違いがあります.空白になるデータのように見えますが、セッション変数からのものです。ある時点でセッション変数が空白になるのはどうしてですか?

これは、データがセッション変数に格納されるコードです。

if(!preg_match('/^[a-zA-Z0-9._\-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/', $email))
$count = 2;
if(!preg_match('/^[A-Za-z0-9]{6}+$/',$key))
$count = 2;
if(!$count)
{
$result = mysql_query("SELECT * FROM test WHERE verify = '$key' AND email = '$email'");
$count = mysql_num_rows($result);
if($count == 1)
 {
  $row = mysql_fetch_row($result);
  $_SESSION['id'] = $row[0];
  $_SESSION['name'] = $row[1];
  $_SESSION['email'] = $email;
  $_SESSION['pass'] = $row[3];
  $_SESSION['key'] = $key;
  mysql_close();
 }
}

これが発生すると、id、name、email、pass、key の 5 つの変数すべてが空白になります。電子メール、およびキーはデータベースから取得されません。キー フィールドには、英数字のコンテンツのみが含まれます。データベースから取得したデータとGET変数で取得したデータを空白にする方法はありますか? (ただし、それでも $count は 1 のはずです)。$count が 1 の場合にのみ、データを新しいテーブルに書き込むことができるため (空白になる場所)

2形態あります。ユーザーが最初のフォームを完了すると、そのデータがテーブル テストに保存され、確認メールがユーザーに送信されます。検証リンクからキーと電子メールを見つけ、テーブル テストをチェックして、それらが有効かどうかを確認します。それらが有効な場合 (つまり、 $count が 1 であることを意味します)、新しいフォームがユーザーに表示され、さらにいくつかの詳細を入力するように求められます。次に、すべてのデータ (この新しいデータと、テーブル test に書き込まれたデータ) が新しいテーブルに書き込まれます。

ここで問題が発生します。新しいデータは新しいテーブルに完全に書き込まれます。ただし、テーブル テストに保存され、セッション変数にコピーされた古いデータは、空白になることがあります。上記のコードを投稿し、セッション変数がどのように設定されているかを示しました。

私のコードに何か問題がある場合は、誰かが私の間違いを指摘できれば助かります。

4

1 に答える 1

1

プログラマーには、データがデータベースに確実に書き込まれるようにするために、少なくとも 5 つの戦術があります。

  1. 書き込む前に、変数の内容が正常であることを確認してください。
  2. 不正なデータを拒否するようにデータベースを設計します。
  3. エラーをトラップします。それらのすべて。
  4. 今書いたことを読み返してください。
  5. ログ ファイルに書き込む詳細モード。
于 2012-09-02T02:07:32.907 に答える