php - MYSQL重复行

标签 php mysql

我正在尝试将值插入到 MYSQL 中的表中,表中有一列应该是唯一的,因此该列始终具有不同的值。

我尝试将 UNIQUE 作为列,但它没有用, 还尝试将该列作为 PRIMARY KEY 并插入 IGNORE INTO 命令它不起作用 ( http://www.tutorialspoint.com/mysql/mysql-handling-duplicates.htm )

我的意图是让 phonenumber 列是唯一的,因此该列中的每个值都是不同的。如果新插入的值不是唯一的,它应该跳过而不给出错误。

我创建表的代码:

  public function create_member_table($table)
 {
$this->sql ="CREATE TABLE IF NOT EXISTS $table ( id BIGINT NOT NULL AUTO_INCREMENT,
                                    username VARCHAR(50) NOT NULL,
                                    phonenumber VARCHAR(20) NOT NULL,
                                    country VARCHAR(2) NOT NULL,
                                    profession VARCHAR(5000) NOT NULL,
                                    profilepic VARCHAR(5000) NOT NULL,
                                    smskey VARCHAR(100) NOT NULL,
                                    status INT NOT NULL,
                                    reg_date_time DATETIME NOT NULL,
                                    UNIQUE (id,phonenumber))
                                    PARTITION BY HASH(id)
                                    PARTITIONS 1023;";
$this->tb = mysqli_query($this->ret,$this->sql);
if(!$this->tb){
  echo "Table not created<br>";

}
else{
  echo "Table created<br>";

}

插入表格:

  public function table_member_insert($table,$phonenumber="",$username="",$country="",$profession="",$profilepic="0",$smskey="",$status="") {

   $this->sql = "INSERT INTO $table
                  (username,phonenumber,country,profession,profilepic,smskey,status,reg_date_time)
                  VALUES
                  ('$username','$phonenumber','$country','$profession','$profilepic','$smskey','$status',now());";

                  $this->tb = mysqli_query($this->ret,$this->sql);
                  if(!$this->tb){
                    echo "values not inserted<br>";

                  }
                  else{
                    echo "values inserted<br>";
                  } }

最佳答案

问题是您将 id 和 phonenumber 字段的组合定义为唯一的。由于您的 id 字段定义为 auto_increment,它本身将是唯一的,因此与 phonenumber 字段的任何组合也将是唯一的。

您需要将电话号码字段单独定义为唯一。之后,您可以使用 insert ignore 插入带有现有电话号码的新记录,而不会出现错误。但是,请注意,在匹配的情况下,唯一索引将阻止插入整条记录。

关于php - MYSQL重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38075199/

相关文章:

php - 如何使用php将多个对象数组写入json文件?

Php 表单未向我的数据库添加数据

mysql - 在 MySQL 中维护有序集合

mysql - 一些数字和字符串对代码有什么影响?

php - 用 PHP 向大量用户发送电子邮件的最有效方法是什么?

mysql - 用于 AspNetCore MySql 连接的 MiniProfiler

mysql - 无法通过实例访问 Django 管理器

PHP SHA256 和 Salt 不起作用

composer-php - Composer : The requested package php could not be found

php - 在一个查询中计算两个字段的问题