2016-04-29 112 views
1

我想让我的PHP检查,如果具有相同特定数据的东西已经存在于我的数据库表中。如何防止插入重复记录?

我有一个名为test的数据库,其表名为users

这是我想要检查一行steamid已存在与相同的$steamid号码。

<?php 

// Datebase infomation 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "test"; 
$steamid = $steamprofile['steamid']; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
// Create data 

$sql = "INSERT INTO users (steamid) 
VALUES ('$steamid')"; 

if (!$conn->query($sql) === TRUE) { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
?> 
+3

你知道“REPLACE INTO”吗? – Jeremy

+0

不,这是如何工作的? –

+1

如果存在主键,则更新该行,否则会创建一行。 – Jeremy

回答

1

您需要在steamid列添加PRIMARY KEYUNIQUE constraint

删除所有副本后,那么你就可以运行这个命令:

ALTER TABLE users ADD PRIMARY KEY(steamid) 

然后如果你试图重复steamid插入users表查询将会失败。

as @Jeremy mentioned,您可以使用REPLACE,但这也是only works if you have a PRIMARY KEY or UNIQUE constraint on the column。如果除了要存储在数据库表中的steamid以外还有其他列,则这是首选方法,因为它将更新这些值。但是,由于在问题INSERT INTO users (steamid) VALUES ('$steamid')中所述的查询仅包含一个字段,因此除非您想要捕获尝试重复记录的条件错误,否则这并不重要,在这种情况下,您应该坚持使用INSERT声明。

+0

谢谢,我现在明白了。 –