假设我有一个名为“device”的表格如下:
device_id(field)
123asf15fas
456g4fd45ww
7861fassd45
我想使用下面的代码插入新记录:
...
$q = "INSERT INTO $database.$table `device_id` VALUES $device_id";
$result = mysql_query($q);
...
我不想插入数据库表中已存在的记录,那么在插入新记录之前如何检查它是否有重复记录?
我应该修改MYSQL语句还是PHP代码?
由于
更新
<?php
// YOUR MYSQL DATABASE CONNECTION
$hostname = 'localhost';
$username = 'root';
$password = '';
$database = 'device';
$table = 'device_id';
$db_link = mysql_connect($hostname, $username, $password);
mysql_select_db( $database ) or die('ConnectToMySQL: Could not select database: ' . $database );
//$result = ini_set ( 'mysql.connect_timeout' , '60' );
$device_id = $_GET["device_id"];
$q = "REPLACE INTO $database.$table (`device_id`) VALUES ($device_id)";
$result = mysql_query($q);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
?>
答案 0 :(得分:3)
由于我很清楚你的问题,你有两种方法可去,这取决于你希望如何完成任务。
第一种方式 - &gt;一个简单的查询可以从数据库表中的device_id
(存在或不存在)中返回一个布尔结果。如果是,则不要INSERT
或REPLACE
(如果您愿意)。
第二种方式 - &gt;您可以修改表格的结构,并确保字段device_id
是UNIQUE
字段。
<强> [EDITED] 强>
解释第一种方式
查询您的表格如下:
SELECT * FROM `your_table` WHERE `device_id`='123asf15fas'
然后如果你得到了结果,那么你已经将数据存储在你的表中,那么结果是1,否则就是0
在原始php中它看起来像:
$result = mysql_query("SELECT * FROM `your_table` WHERE `device_id`='123asf15fas'");
if (!$result)
{
// your code INSERT
$result = mysql_query("INSERT INTO $database.$table `device_id` VALUES $device_id");
}
解释第二种方式
如果您的表尚未填充,您可以为表创建索引,例如转到SQL命令行或DBMS并对表执行以下命令:
ALTER TABLE `your_table` ADD UNIQUE (`device_id`)
警告:如果已经填充并且该字段上有一些相同的数据,则不会创建索引。
使用索引,当有人尝试插入相同的ID时,会收到错误消息,如下所示:
#1062 - Duplicate entry '1' for key 'PRIMARY'
答案 1 :(得分:1)