写入数据库时出错


Error in writing to database

我正在使用php将一些数据写入数据库。99%的情况下,数据被正确写入数据库。但有时,会将空白数据插入数据库。我不认为我的代码有问题,因为我大部分时间都可以将数据写入数据库。

如果数据库所在的服务器的互联网连接速度较慢,或者用户的电脑互联网连接速度缓慢,会发生这种情况吗?

实际上有一个小错误。。看起来变为空白的数据来自会话变量。会话变量怎么可能在某个时间被清空?

这是用于将数据存储到会话变量中的代码:

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();
 }
}

当它发生时,所有5个变量id、名称、电子邮件、通行证和密钥都变为空。电子邮件和密钥不取自数据库。关键字字段仅包含字母数字内容。那么,有没有一种方法可以让从数据库以及GET变量中获取的数据变为空白?(但即便如此,$count也应该为1)。因为,只有当$count为1时,数据才能写入新表(在那里它被清空)

有两种形式。当用户完成第一个表单时,该数据存储在表测试中,并向他们发送验证邮件。从验证链接中,我找到了他们的密钥和电子邮件,并检查了表格测试,看看它们是否有效。如果它们是有效的(这意味着$count是1),则会向用户显示一个新表单,要求用户输入更多的详细信息。然后,所有数据(这个新数据,以及写入表格测试的数据)都应写入一个新表格。

这就是事情出错的地方。新数据被完美地写入新表。但是,存储在表测试中并复制到会话变量的旧数据有时会变为空白。我已经在上面发布了它的代码,展示了会话变量是如何设置的。

如果有人能指出我的错误,如果我的代码有问题,那将是有帮助的。

程序员至少有五种策略来确保数据写入数据库。

  1. 在编写之前,请检查变量的内容是否健全
  2. 设计数据库以拒绝坏数据
  3. 陷阱错误。所有这些
  4. 读回你刚才写的内容
  5. 写入日志文件的详细模式