主键的重复数据

时间:2014-04-28 11:09:44

标签: php mysql

我有一个表格,可以为用户保存ID。该ID的数据来自LDAP 用户第一次登录时,会在表格中插入ID。但我需要考虑已经在数据库上有数据的用户。 我收到了错误 重复录入' whateverdata'关键' PRIMARY'。 由于它插入数据的字段是主键。但我需要解决这个问题。

$check = "select * from utilizadores where id = '$samaccountname[0]'";
$h = mysql_query($check);
if (!$h) {
  die (mysql_error());
}

$data = mysql_fetch_array($h);
if ($data[0] > 1) {
  header('location:pprincipal.php');
} 
else {
  $query = mysql_query("insert into utilizadores (id) values('$samaccountname[0]');");
  if (!$query){
    die (mysql_error());
  } 
}

我不想复制数据,我只是想检查数据是否已插入,如果是,请继续,如果不是,则插入数据。

注意:$ samaccountname是一个包含从LDAP

获取的数据的变量

basicaly - 用户首次登录并在数据库中插入数据。 第二次 - 由于该字段是主键,它将失败。 为了进入主页面(pprincipal.php),用户必须将他的数据插入数据库。

提前致谢。

2 个答案:

答案 0 :(得分:1)

mysql_num_rows条件中使用if函数。

 if (mysql_num_rows($h)){
      header('location:pprincipal.php');
    } else {
       $query = mysql_query("insert into utilizadores (id) values('$samaccountname[0]');");
       if (!$query){
        die (mysql_error());
       }
    }

答案 1 :(得分:0)

您可以插入忽略数据而不检查它是否存在。 用以下代码替换你的代码:

$query = mysql_query("insert ignore into utilizadores (id) values('$samaccountname[0]');");
if (!$query){
    die (mysql_error());
}