写入数据库时​​出错

时间:2012-09-02 01:56:03

标签: php mysql

我正在使用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,name,email,pass和key都变为空白。电子邮件和密钥不从数据库中获取。关键字段仅包含字母数字内容。那么从数据库中获取的数据以及GET变量的数据是否有空白? (但即便如此,$ count应为1)。因为,只有$ count为1,才能将数据写入新表(它被消隐的地方)

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

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

如果有人能指出我的错误,如果我的代码中有错误,那将会很有帮助。

1 个答案:

答案 0 :(得分:1)

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

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